mirror of
https://github.com/fluencelabs/redis
synced 2025-04-10 03:06:05 +00:00
Merge branch 'unstable' into incrbyfloat
This commit is contained in:
commit
d4a3cfed9c
@ -431,7 +431,7 @@ int rewriteAppendOnlyFile(char *filename) {
|
|||||||
FILE *fp;
|
FILE *fp;
|
||||||
char tmpfile[256];
|
char tmpfile[256];
|
||||||
int j;
|
int j;
|
||||||
time_t now = time(NULL);
|
long long now = mstime();
|
||||||
|
|
||||||
/* Note that we have to use a different temp name here compared to the
|
/* Note that we have to use a different temp name here compared to the
|
||||||
* one used by rewriteAppendOnlyFileBackground() function. */
|
* one used by rewriteAppendOnlyFileBackground() function. */
|
||||||
@ -462,7 +462,7 @@ int rewriteAppendOnlyFile(char *filename) {
|
|||||||
while((de = dictNext(di)) != NULL) {
|
while((de = dictNext(di)) != NULL) {
|
||||||
sds keystr;
|
sds keystr;
|
||||||
robj key, *o;
|
robj key, *o;
|
||||||
time_t expiretime;
|
long long expiretime;
|
||||||
|
|
||||||
keystr = dictGetKey(de);
|
keystr = dictGetKey(de);
|
||||||
o = dictGetVal(de);
|
o = dictGetVal(de);
|
||||||
|
@ -91,7 +91,7 @@ void computeDatasetDigest(unsigned char *final) {
|
|||||||
while((de = dictNext(di)) != NULL) {
|
while((de = dictNext(di)) != NULL) {
|
||||||
sds key;
|
sds key;
|
||||||
robj *keyobj, *o;
|
robj *keyobj, *o;
|
||||||
time_t expiretime;
|
long long expiretime;
|
||||||
|
|
||||||
memset(digest,0,20); /* This key-val digest */
|
memset(digest,0,20); /* This key-val digest */
|
||||||
key = dictGetKey(de);
|
key = dictGetKey(de);
|
||||||
|
@ -597,7 +597,7 @@ int rdbSave(char *filename) {
|
|||||||
dictEntry *de;
|
dictEntry *de;
|
||||||
char tmpfile[256];
|
char tmpfile[256];
|
||||||
int j;
|
int j;
|
||||||
time_t now = mstime();
|
long long now = mstime();
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
rio rdb;
|
rio rdb;
|
||||||
|
|
||||||
|
@ -563,17 +563,17 @@ void activeExpireCycle(void) {
|
|||||||
* of the keys were expired. */
|
* of the keys were expired. */
|
||||||
do {
|
do {
|
||||||
long num = dictSize(db->expires);
|
long num = dictSize(db->expires);
|
||||||
time_t now = time(NULL);
|
long long now = mstime();
|
||||||
|
|
||||||
expired = 0;
|
expired = 0;
|
||||||
if (num > REDIS_EXPIRELOOKUPS_PER_CRON)
|
if (num > REDIS_EXPIRELOOKUPS_PER_CRON)
|
||||||
num = REDIS_EXPIRELOOKUPS_PER_CRON;
|
num = REDIS_EXPIRELOOKUPS_PER_CRON;
|
||||||
while (num--) {
|
while (num--) {
|
||||||
dictEntry *de;
|
dictEntry *de;
|
||||||
time_t t;
|
long long t;
|
||||||
|
|
||||||
if ((de = dictGetRandomKey(db->expires)) == NULL) break;
|
if ((de = dictGetRandomKey(db->expires)) == NULL) break;
|
||||||
t = (time_t) dictGetVal(de);
|
t = dictGetSignedIntegerVal(de);
|
||||||
if (now > t) {
|
if (now > t) {
|
||||||
sds key = dictGetKey(de);
|
sds key = dictGetKey(de);
|
||||||
robj *keyobj = createStringObject(key,sdslen(key));
|
robj *keyobj = createStringObject(key,sdslen(key));
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
|
|
||||||
/* Static server configuration */
|
/* Static server configuration */
|
||||||
#define REDIS_SERVERPORT 6379 /* TCP port */
|
#define REDIS_SERVERPORT 6379 /* TCP port */
|
||||||
#define REDIS_MAXIDLETIME (60*5) /* default client timeout */
|
#define REDIS_MAXIDLETIME 0 /* default client timeout: infinite */
|
||||||
#define REDIS_IOBUF_LEN (1024*16)
|
#define REDIS_IOBUF_LEN (1024*16)
|
||||||
#define REDIS_LOADBUF_LEN 1024
|
#define REDIS_LOADBUF_LEN 1024
|
||||||
#define REDIS_DEFAULT_DBNUM 16
|
#define REDIS_DEFAULT_DBNUM 16
|
||||||
|
@ -127,4 +127,18 @@ start_server {tags {"expire"}} {
|
|||||||
set ttl [r pttl x]
|
set ttl [r pttl x]
|
||||||
assert {$ttl > 900 && $ttl <= 1000}
|
assert {$ttl > 900 && $ttl <= 1000}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test {Redis should actively expire keys incrementally} {
|
||||||
|
r flushdb
|
||||||
|
r psetex key1 500 a
|
||||||
|
r psetex key2 500 a
|
||||||
|
r psetex key3 500 a
|
||||||
|
set size1 [r dbsize]
|
||||||
|
# Redis expires random keys ten times every second so we are
|
||||||
|
# fairly sure that all the three keys should be evicted after
|
||||||
|
# one second.
|
||||||
|
after 1000
|
||||||
|
set size2 [r dbsize]
|
||||||
|
list $size1 $size2
|
||||||
|
} {3 0}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user