From ab490723629cd50ab49cc699023c5af31ab427e7 Mon Sep 17 00:00:00 2001 From: antirez Date: Mon, 22 Jul 2019 12:10:51 +0200 Subject: [PATCH] Client side caching: don't hash the key if not needed. --- src/tracking.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/tracking.c b/src/tracking.c index 5938efade..7ee4d0b2c 100644 --- a/src/tracking.c +++ b/src/tracking.c @@ -156,12 +156,15 @@ void sendTrackingMessage(client *c, long long hash) { /* This function is called from signalModifiedKey() or other places in Redis * when a key changes value. In the context of keys tracking, our task here is - * to send a notification to every client that may have keys about such . */ + * to send a notification to every client that may have keys about such caching + * slot. */ void trackingInvalidateKey(robj *keyobj) { + if (TrackingTable == NULL || TrackingTableUsedSlots == 0) return; + sds sdskey = keyobj->ptr; uint64_t hash = crc64(0, (unsigned char*)sdskey,sdslen(sdskey))&(TRACKING_TABLE_SIZE-1); - if (TrackingTable == NULL || TrackingTable[hash] == NULL) return; + if (TrackingTable[hash] == NULL) return; raxIterator ri; raxStart(&ri,TrackingTable[hash]);