提交 d4a3cfed 编写于 作者: A antirez

Merge branch 'unstable' into incrbyfloat

......@@ -431,7 +431,7 @@ int rewriteAppendOnlyFile(char *filename) {
FILE *fp;
char tmpfile[256];
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
* one used by rewriteAppendOnlyFileBackground() function. */
......@@ -462,7 +462,7 @@ int rewriteAppendOnlyFile(char *filename) {
while((de = dictNext(di)) != NULL) {
sds keystr;
robj key, *o;
time_t expiretime;
long long expiretime;
keystr = dictGetKey(de);
o = dictGetVal(de);
......
......@@ -91,7 +91,7 @@ void computeDatasetDigest(unsigned char *final) {
while((de = dictNext(di)) != NULL) {
sds key;
robj *keyobj, *o;
time_t expiretime;
long long expiretime;
memset(digest,0,20); /* This key-val digest */
key = dictGetKey(de);
......
......@@ -597,7 +597,7 @@ int rdbSave(char *filename) {
dictEntry *de;
char tmpfile[256];
int j;
time_t now = mstime();
long long now = mstime();
FILE *fp;
rio rdb;
......
......@@ -563,17 +563,17 @@ void activeExpireCycle(void) {
* of the keys were expired. */
do {
long num = dictSize(db->expires);
time_t now = time(NULL);
long long now = mstime();
expired = 0;
if (num > REDIS_EXPIRELOOKUPS_PER_CRON)
num = REDIS_EXPIRELOOKUPS_PER_CRON;
while (num--) {
dictEntry *de;
time_t t;
long long t;
if ((de = dictGetRandomKey(db->expires)) == NULL) break;
t = (time_t) dictGetVal(de);
t = dictGetSignedIntegerVal(de);
if (now > t) {
sds key = dictGetKey(de);
robj *keyobj = createStringObject(key,sdslen(key));
......
......@@ -39,7 +39,7 @@
/* Static server configuration */
#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_LOADBUF_LEN 1024
#define REDIS_DEFAULT_DBNUM 16
......
......@@ -127,4 +127,18 @@ start_server {tags {"expire"}} {
set ttl [r pttl x]
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}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册