mirror of
https://github.com/fluencelabs/redis
synced 2025-03-19 17:10:50 +00:00
binary safe keys ready implementation of RANDOMKEYS
This commit is contained in:
parent
24df76987e
commit
dc4be23ec8
17
redis.c
17
redis.c
@ -4234,18 +4234,25 @@ static void selectCommand(redisClient *c) {
|
||||
|
||||
static void randomkeyCommand(redisClient *c) {
|
||||
dictEntry *de;
|
||||
robj *key;
|
||||
|
||||
while(1) {
|
||||
de = dictGetRandomKey(c->db->dict);
|
||||
if (!de || expireIfNeeded(c->db,dictGetEntryKey(de)) == 0) break;
|
||||
}
|
||||
|
||||
if (de == NULL) {
|
||||
addReply(c,shared.plus);
|
||||
addReply(c,shared.crlf);
|
||||
addReply(c,shared.nullbulk);
|
||||
return;
|
||||
}
|
||||
|
||||
key = dictGetEntryKey(de);
|
||||
if (server.vm_enabled) {
|
||||
key = dupStringObject(key);
|
||||
addReplyBulk(c,key);
|
||||
decrRefCount(key);
|
||||
} else {
|
||||
addReply(c,shared.plus);
|
||||
addReply(c,dictGetEntryKey(de));
|
||||
addReply(c,shared.crlf);
|
||||
addReplyBulk(c,key);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user