antirez
75512d94d9
PSYNC: work in progress, preview #2 , rebased to unstable.
2013-02-12 12:52:21 +01:00
antirez
6aa1a3b030
Send 'expired' events when a key expires by lookup.
2013-01-28 13:15:19 +01:00
antirez
f28d386cc5
Keyspace events: it is now possible to select subclasses of events.
...
When keyspace events are enabled, the overhead is not sever but
noticeable, so this commit introduces the ability to select subclasses
of events in order to avoid to generate events the user is not
interested in.
The events can be selected using redis.conf or CONFIG SET / GET.
2013-01-28 13:15:12 +01:00
antirez
f2d1105618
Keyspace events added for more commands.
2013-01-28 13:14:56 +01:00
antirez
ccef29ae2c
Initial test events for the new keyspace notification API.
2013-01-28 13:14:46 +01:00
antirez
be77f92e10
Fixed over-80-cols comment in db.c
2013-01-28 13:14:42 +01:00
antirez
247df4e83b
Whitelist SIGUSR1 to avoid auto-triggering errors.
...
This commit fixes issue #875 that was caused by the following events:
1) There is an active child doing BGSAVE.
2) flushall is called (or any other condition that makes Redis killing
the saving child process).
3) An error is sensed by Redis as the child exited with an error (killed
by a singal), that stops accepting write commands until a BGSAVE happens
to be executed with success.
Whitelisting SIGUSR1 and making sure Redis always uses this signal in
order to kill its own children fixes the issue.
2013-01-19 13:30:38 +01:00
guiquanz
df7a5b7157
Fixed many typos.
2013-01-19 10:59:44 +01:00
antirez
547c83bf5d
TTL API change: TTL returns -2 for non existing keys.
...
The previous behavior was to return -1 if:
1) Existing key but without an expire set.
2) Non existing key.
Now the second case is handled in a different, and TTL will return -2
if the key does not exist at all.
PTTL follows the same behavior as well.
2012-11-12 23:04:36 +01:00
antirez
a32d1ddff6
BSD license added to every C source and header file.
2012-11-08 18:31:32 +01:00
antirez
f3dc5e66f7
Make sure that SELECT argument is an integer or return an error.
...
Unfortunately we had still the lame atoi() without any error checking in
place, so "SELECT foo" would work as "SELECT 0". This was not an huge
problem per se but some people expected that DB can be strings and not
just numbers, and without errors you get the feeling that they can be
numbers, but not the behavior.
Now getLongFromObjectOrReply() is used as almost everybody else across
the code, generating an error if the number is not an integer or
overflows the long type.
Thanks to @mipearson for reporting that on Twitter.
2012-09-11 10:32:04 +02:00
Pieter Noordhuis
86b1d9e798
Use safe dictionary iterator from KEYS
...
Every matched key in a KEYS call is checked for expiration. When the key
is set to expire, the call to `getExpire` will assert that the key also
exists in the main dictionary. This in turn causes a rehashing step to
be executed. Rehashing a dictionary when there is an iterator active may
result in the iterator emitting duplicate entries, or not emitting some
entries at all. By using a safe iterator, the rehash step is omitted.
2012-05-01 10:52:03 +02:00
antirez
015b287ce3
Never used function stringObjectEqualsMs() removed.
2012-04-07 02:10:48 +02:00
antirez
fd3da94a95
expireGenericCommand(): better variable names and a top-comment that describes the function's behavior.
2012-04-05 15:52:08 +02:00
Premysl Hruby
aa83592cd4
for (p)expireat use absolute time, without double recomputation
2012-04-05 15:46:21 +02:00
Premysl Hruby
3cfe7fb462
fix mstime() ommited while comparing if key is already expired
2012-04-05 15:46:15 +02:00
Premysl Hruby
9519b3efd6
remove disk-store related comments
2012-03-27 18:46:51 +02:00
Premysl Hruby
b371ac5b20
fix time() instead of mstime() in expireIfNeeded
2012-03-27 17:31:21 +02:00
antirez
ea71e06988
Use less memory when emitting the protocol, by using more shared objects for commonly emitted parts of the protocol.
2012-02-04 08:58:37 +01:00
antirez
c814e1baca
Only incremnet stats for key miss/hit when the key is semantically accessed in read-only.
2012-02-01 21:51:20 +01:00
antirez
e6369ae06e
setKey(): call the higher level wrapper setModifiedKey() instead of touchWatchedKey() even if currently they are exactly the same.
2012-01-30 10:27:50 +01:00
antirez
4aa527ba09
some RDB server struct fields renamed.
2011-12-21 12:22:13 +01:00
antirez
0bb9c8b70d
more AOF server struct fields renamed.
2011-12-21 12:17:02 +01:00
antirez
6bb4b565ff
AOF refactoring, now with three states: ON, OFF, WAIT_REWRITE.
2011-12-21 10:31:34 +01:00
antirez
194a790664
New script timeout semantics and SCRIPT KILL implemented. SHUTDOWN NOSAVE and SHUTDOWN SAVE implemented.
2011-11-18 14:10:48 +01:00
antirez
bd19e43850
high resolution expires API modified to use separated commands. AOF transation to PEXPIREAT of all the expire-style commands fixed.
2011-11-10 17:52:02 +01:00
antirez
b93074be52
TTL, EXPIRE and EXPIREAT now support the milliseconds input/output form
2011-11-09 18:05:35 +01:00
antirez
027876589d
Initial support for key expire times with millisecond resolution. RDB version is now 3, new opcoded added for high resolution times. Redis is still able to correctly load RDB version 2. Tests passing but still a work in progress. API to specify milliseconds expires still missing, but the precision of normal expires is now already improved and working.
2011-11-09 16:51:19 +01:00
antirez
d6c3b3004e
dict.c API names modified to be more coincise and consistent.
2011-11-08 17:07:55 +01:00
antirez
1c00a9b3eb
FLUSHALL now prevents rdbSave() from resetting the dirty counter, so that the command will get replicated and put inside the AOF. This fixes issue #142
2011-10-17 10:31:47 +02:00
antirez
0db621585c
FLUSHALL will only perform a blocking SAVE if RDB persistence is configured.
2011-10-17 10:31:34 +02:00
antirez
3fc8eb796c
Fix for bug #128 about the RENAME command.
2011-10-10 15:21:19 +02:00
antirez
357f49db2f
replaced redisAssert() with redisAssertWithInfo() in a shitload of places.
2011-10-04 18:43:03 +02:00
antirez
a5f5dccd7a
don't process EXPIRE with negative TTL or EXPIREAT with time in the past if we are a slave too (see http://groups.google.com/group/redis-db/browse_thread/thread/5a931fefb88b16d5 ). Also propagate it as DEL.
2011-07-07 16:24:37 +02:00
Hampus Wessman
5292b93ba4
Don't expire keys while loading AOF.
...
They will be expired (and a DEL will be logged) after the loading is done
instead.
2011-07-07 16:08:30 +02:00
antirez
59f09141f5
diskstore removed
2011-06-25 12:22:03 +02:00
antirez
0b00199553
DB API refactoring. The changes were designed together with Pieter Noordhuis.
2011-06-20 16:42:16 +02:00
antirez
0fd4ab0854
Fixed semantics of CLUSTER SETSLOT, SELECT now only denied in cluster mode if selected DB is not 0 so that MIGRATE still works well.
2011-05-05 18:10:02 +02:00
antirez
135dcfc42c
CLUSTER GETKEYSINSLOT implemented
2011-04-29 16:17:58 +02:00
antirez
086fac186f
take a hashslot -> keys index, will be used for cluster rehasing
2011-04-28 19:00:33 +02:00
antirez
b2b9d54320
Cluster branch merged to unstable.
2011-03-29 17:51:15 +02:00
antirez
8cc596105b
fixed a bug in RENAME getKeys() function
2011-03-28 18:46:22 +02:00
antirez
ab1ab17b2a
bug fixed in zunionstore specific getKeys() implementation
2011-03-28 18:21:06 +02:00
antirez
e0fe418dae
Fixes to the new preloading / key discovery APIs
2011-03-28 17:54:42 +02:00
antirez
db608dd7e3
new preloading implemented, still EXEC not handled correctly, everything to test
2011-03-23 18:09:17 +01:00
antirez
cf8ab35834
TTL command fixed to work reliably with diskstore
2011-03-04 15:49:01 +01:00
antirez
3e7c76253e
master-slave replication fixed, it was not listing any key using KEYS command in the slave.
2011-01-14 09:53:57 +01:00
antirez
f261a5d500
test adapted to run with diskstore, and a few bugs fixed
2011-01-09 18:25:34 +01:00
antirez
e6fdae80f8
source reshaped a bit to play well with a bgsaving thread, still work to do, does not compile.
2011-01-07 18:15:14 +01:00
antirez
540d66c60d
fixed logging level for debugging message
2011-01-03 17:40:10 +01:00