MCPcopy Create free account
hub / github.com/Snapchat/KeyDB / getKeyFreqs

Function getKeyFreqs

src/redis-cli.c:6676–6710  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6674}
6675
6676static void getKeyFreqs(redisReply *keys, unsigned long long *freqs) {
6677 redisReply *reply;
6678 unsigned int i;
6679
6680 /* Pipeline OBJECT freq commands */
6681 for(i=0;i<keys->elements;i++) {
6682 const char* argv[] = {"OBJECT", "FREQ", keys->element[i]->str};
6683 size_t lens[] = {6, 4, keys->element[i]->len};
6684 redisAppendCommandArgv(context, 3, argv, lens);
6685 }
6686
6687 /* Retrieve freqs */
6688 for(i=0;i<keys->elements;i++) {
6689 if(redisGetReply(context, (void**)&reply)!=REDIS_OK) {
6690 sds keyname = sdscatrepr(sdsempty(), keys->element[i]->str, keys->element[i]->len);
6691 fprintf(stderr, "Error getting freq for key '%s' (%d: %s)\n",
6692 keyname, context->err, context->errstr);
6693 sdsfree(keyname);
6694 exit(1);
6695 } else if(reply->type != REDIS_REPLY_INTEGER) {
6696 if(reply->type == REDIS_REPLY_ERROR) {
6697 fprintf(stderr, "Error: %s\n", reply->str);
6698 exit(1);
6699 } else {
6700 sds keyname = sdscatrepr(sdsempty(), keys->element[i]->str, keys->element[i]->len);
6701 fprintf(stderr, "Warning: OBJECT freq on '%s' failed (may have been deleted)\n", keyname);
6702 sdsfree(keyname);
6703 freqs[i] = 0;
6704 }
6705 } else {
6706 freqs[i] = reply->integer;
6707 }
6708 freeReplyObject(reply);
6709 }
6710}
6711
6712#define HOTKEYS_SAMPLE 16
6713static void findHotKeys(void) {

Callers 1

findHotKeysFunction · 0.85

Calls 6

redisAppendCommandArgvFunction · 0.85
redisGetReplyFunction · 0.85
sdscatreprFunction · 0.85
sdsemptyFunction · 0.85
sdsfreeFunction · 0.85
freeReplyObjectFunction · 0.85

Tested by

no test coverage detected