mirror of
https://github.com/fluencelabs/redis
synced 2025-03-30 22:31:03 +00:00
Merge remote branch 'origin/unstable' into unstable
This commit is contained in:
commit
3d9704d335
26
TODO
26
TODO
@ -52,42 +52,18 @@ OPTIMIZATIONS
|
|||||||
* Redis big lists as linked lists of small ziplists?
|
* Redis big lists as linked lists of small ziplists?
|
||||||
Possibly a simple heuristic that join near nodes when some node gets smaller than the low_level, and split it into two if gets bigger than high_level.
|
Possibly a simple heuristic that join near nodes when some node gets smaller than the low_level, and split it into two if gets bigger than high_level.
|
||||||
|
|
||||||
REPORTING
|
|
||||||
=========
|
|
||||||
|
|
||||||
* Better INFO output with sections.
|
|
||||||
|
|
||||||
RANDOM
|
RANDOM
|
||||||
======
|
======
|
||||||
|
|
||||||
|
* Server should abort when getcwd() fails if there is some kind of persistence configured. Check this in the cron loop.
|
||||||
* Clients should be closed as far as the output buffer list is bigger than a given number of elements (configurable in redis.conf)
|
* Clients should be closed as far as the output buffer list is bigger than a given number of elements (configurable in redis.conf)
|
||||||
* Should the redis default configuration, and the default redis.conf, just bind 127.0.0.1?
|
* Should the redis default configuration, and the default redis.conf, just bind 127.0.0.1?
|
||||||
|
|
||||||
KNOWN BUGS
|
KNOWN BUGS
|
||||||
==========
|
==========
|
||||||
|
|
||||||
* What happens in the following scenario:
|
|
||||||
1) We are reading an AOF file.
|
|
||||||
2) SETEX FOO 5 BAR
|
|
||||||
3) APPEND FOO ZAP
|
|
||||||
What happens if between 1 and 2 for some reason (system under huge load
|
|
||||||
or alike) too many time passes? We should prevent expires while the
|
|
||||||
AOF is loading.
|
|
||||||
* #519: Slave may have expired keys that were never read in the master (so a DEL
|
* #519: Slave may have expired keys that were never read in the master (so a DEL
|
||||||
is not sent in the replication channel) but are already expired since
|
is not sent in the replication channel) but are already expired since
|
||||||
a lot of time. Maybe after a given delay that is undoubltly greater than
|
a lot of time. Maybe after a given delay that is undoubltly greater than
|
||||||
the replication link latency we should expire this key on the slave on
|
the replication link latency we should expire this key on the slave on
|
||||||
access?
|
access?
|
||||||
|
|
||||||
DISKSTORE TODO
|
|
||||||
==============
|
|
||||||
|
|
||||||
* Fix FLUSHALL/FLUSHDB: the queue of pending reads/writes should be handled.
|
|
||||||
* Check that 00/00 and ff/ff exist at startup, otherwise exit with error.
|
|
||||||
* Implement sync flush option, where data is written synchronously on disk when a command is executed.
|
|
||||||
* Implement MULTI/EXEC as transaction abstract API to diskstore.c, with transaction_start, transaction_end, and a journal to recover.
|
|
||||||
* Stop BGSAVE thread on shutdown and any other condition where the child is killed during normal bgsave.
|
|
||||||
* Fix RANDOMKEY to really do something interesting
|
|
||||||
* Fix DBSIZE to really do something interesting
|
|
||||||
* Add a DEBUG command to check if an entry is or not in memory currently
|
|
||||||
* dscache.c near 236, kobj = createStringObject... we could use static obj.
|
|
||||||
|
@ -169,7 +169,7 @@ dependencies:
|
|||||||
../deps/jemalloc/lib/libjemalloc.a:
|
../deps/jemalloc/lib/libjemalloc.a:
|
||||||
cd ../deps/jemalloc && ./configure $(JEMALLOC_CFLAGS) --with-jemalloc-prefix=je_ --enable-cc-silence && $(MAKE) lib/libjemalloc.a
|
cd ../deps/jemalloc && ./configure $(JEMALLOC_CFLAGS) --with-jemalloc-prefix=je_ --enable-cc-silence && $(MAKE) lib/libjemalloc.a
|
||||||
|
|
||||||
redis-server: $(OBJ)
|
redis-server: dependencies $(OBJ)
|
||||||
$(QUIET_LINK)$(CC) -o $(PRGNAME) $(CCOPT) $(DEBUG) $(OBJ) $(CCLINK) $(ALLOC_LINK) ../deps/lua/src/liblua.a
|
$(QUIET_LINK)$(CC) -o $(PRGNAME) $(CCOPT) $(DEBUG) $(OBJ) $(CCLINK) $(ALLOC_LINK) ../deps/lua/src/liblua.a
|
||||||
|
|
||||||
redis-benchmark: dependencies $(BENCHOBJ)
|
redis-benchmark: dependencies $(BENCHOBJ)
|
||||||
|
@ -508,12 +508,11 @@ void configGetCommand(redisClient *c) {
|
|||||||
if (stringmatch(pattern,"dir",0)) {
|
if (stringmatch(pattern,"dir",0)) {
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
|
|
||||||
addReplyBulkCString(c,"dir");
|
if (getcwd(buf,sizeof(buf)) == NULL)
|
||||||
if (getcwd(buf,sizeof(buf)) == NULL) {
|
|
||||||
buf[0] = '\0';
|
buf[0] = '\0';
|
||||||
} else {
|
|
||||||
addReplyBulkCString(c,buf);
|
addReplyBulkCString(c,"dir");
|
||||||
}
|
addReplyBulkCString(c,buf);
|
||||||
matches++;
|
matches++;
|
||||||
}
|
}
|
||||||
if (stringmatch(pattern,"dbfilename",0)) {
|
if (stringmatch(pattern,"dbfilename",0)) {
|
||||||
|
@ -403,8 +403,11 @@ void hdelCommand(redisClient *c) {
|
|||||||
|
|
||||||
for (j = 2; j < c->argc; j++) {
|
for (j = 2; j < c->argc; j++) {
|
||||||
if (hashTypeDelete(o,c->argv[j])) {
|
if (hashTypeDelete(o,c->argv[j])) {
|
||||||
if (hashTypeLength(o) == 0) dbDelete(c->db,c->argv[1]);
|
|
||||||
deleted++;
|
deleted++;
|
||||||
|
if (hashTypeLength(o) == 0) {
|
||||||
|
dbDelete(c->db,c->argv[1]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (deleted) {
|
if (deleted) {
|
||||||
|
@ -235,6 +235,13 @@ start_server {tags {"hash"}} {
|
|||||||
r hgetall myhash
|
r hgetall myhash
|
||||||
} {b 2}
|
} {b 2}
|
||||||
|
|
||||||
|
test {HDEL - hash becomes empty before deleting all specified fields} {
|
||||||
|
r del myhash
|
||||||
|
r hmset myhash a 1 b 2 c 3
|
||||||
|
assert_equal 3 [r hdel myhash a b c d e]
|
||||||
|
assert_equal 0 [r exists myhash]
|
||||||
|
}
|
||||||
|
|
||||||
test {HEXISTS} {
|
test {HEXISTS} {
|
||||||
set rv {}
|
set rv {}
|
||||||
set k [lindex [array names smallhash *] 0]
|
set k [lindex [array names smallhash *] 0]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user