summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2020-02-14 18:22:25 +0100
committerantirez <antirez@gmail.com>2020-02-14 18:22:25 +0100
commit20eeddfb8a8840aff8ac9e54a69650890d9c1e64 (patch)
tree15ef8c40acd82a89a97c38d61bebfa862491d9bb /src
parent090bc0c1a37cfba092102527524ee2a3023d0481 (diff)
downloadredis-20eeddfb8a8840aff8ac9e54a69650890d9c1e64.tar.gz
Signal key as modified when expired on-access.
This fixes WATCH and client side caching with keys expiring because of a synchronous access and not because of background expiring.
Diffstat (limited to 'src')
-rw-r--r--src/db.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/db.c b/src/db.c
index c80524e94..8a0242d9e 100644
--- a/src/db.c
+++ b/src/db.c
@@ -1296,8 +1296,10 @@ int expireIfNeeded(redisDb *db, robj *key) {
propagateExpire(db,key,server.lazyfree_lazy_expire);
notifyKeyspaceEvent(NOTIFY_EXPIRED,
"expired",key,db->id);
- return server.lazyfree_lazy_expire ? dbAsyncDelete(db,key) :
- dbSyncDelete(db,key);
+ int retval = server.lazyfree_lazy_expire ? dbAsyncDelete(db,key) :
+ dbSyncDelete(db,key);
+ if (retval) signalModifiedKey(db,key);
+ return retval;
}
/* -----------------------------------------------------------------------------