Clinet side caching: take count of used caching slots.
This commit is contained in:
parent
bc5cb168f5
commit
e00442eb13
@ -60,6 +60,7 @@
|
|||||||
* use the most significant bits instead of the full 24 bits. */
|
* use the most significant bits instead of the full 24 bits. */
|
||||||
#define TRACKING_TABLE_SIZE (1<<24)
|
#define TRACKING_TABLE_SIZE (1<<24)
|
||||||
rax **TrackingTable = NULL;
|
rax **TrackingTable = NULL;
|
||||||
|
unsigned long TrackingTableUsedSlots = 0;
|
||||||
robj *TrackingChannelName;
|
robj *TrackingChannelName;
|
||||||
|
|
||||||
/* Remove the tracking state from the client 'c'. Note that there is not much
|
/* Remove the tracking state from the client 'c'. Note that there is not much
|
||||||
@ -109,8 +110,10 @@ void trackingRememberKeys(client *c) {
|
|||||||
sds sdskey = c->argv[idx]->ptr;
|
sds sdskey = c->argv[idx]->ptr;
|
||||||
uint64_t hash = crc64(0,
|
uint64_t hash = crc64(0,
|
||||||
(unsigned char*)sdskey,sdslen(sdskey))&(TRACKING_TABLE_SIZE-1);
|
(unsigned char*)sdskey,sdslen(sdskey))&(TRACKING_TABLE_SIZE-1);
|
||||||
if (TrackingTable[hash] == NULL)
|
if (TrackingTable[hash] == NULL) {
|
||||||
TrackingTable[hash] = raxNew();
|
TrackingTable[hash] = raxNew();
|
||||||
|
TrackingTableUsedSlots++;
|
||||||
|
}
|
||||||
raxTryInsert(TrackingTable[hash],
|
raxTryInsert(TrackingTable[hash],
|
||||||
(unsigned char*)&c->id,sizeof(c->id),NULL,NULL);
|
(unsigned char*)&c->id,sizeof(c->id),NULL,NULL);
|
||||||
}
|
}
|
||||||
@ -176,6 +179,7 @@ void trackingInvalidateKey(robj *keyobj) {
|
|||||||
* again if more keys will be modified in this hash slot. */
|
* again if more keys will be modified in this hash slot. */
|
||||||
raxFree(TrackingTable[hash]);
|
raxFree(TrackingTable[hash]);
|
||||||
TrackingTable[hash] = NULL;
|
TrackingTable[hash] = NULL;
|
||||||
|
TrackingTableUsedSlots--;
|
||||||
}
|
}
|
||||||
|
|
||||||
void trackingInvalidateKeysOnFlush(int dbid) {
|
void trackingInvalidateKeysOnFlush(int dbid) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user