当前位置: 首页> 财经> 访谈 > 高唐网页定制_分销系统微信_百度手机助手下载安装_seo学习

高唐网页定制_分销系统微信_百度手机助手下载安装_seo学习

时间:2025/8/2 23:19:21来源:https://blog.csdn.net/u011992620/article/details/147046326 浏览次数:1次
高唐网页定制_分销系统微信_百度手机助手下载安装_seo学习

语法:

keys pattern

返回所有符合pattern的key

支持 glob-style patterns:

  • h?llo matches hello, hallo and hxllo
  • h*llo matches hllo and heeeello
  • h[ae]llo matches hello and hallo, but not hillo
  • h[^e]llo matches hallo, hbllo, ... but not hello
  • h[a-b]llo matches hallo and hbllo

源码分析

void keysCommand(client *c)
{dictIterator *di;dictEntry *de;// 获取当前的匹配模式sds pattern = c->argv[1]->ptr;int plen = sdslen(pattern), allkeys;unsigned long numkeys = 0;void *replylen = addReplyDeferredLen(c);// 获取数据字典的迭代器di = dictGetSafeIterator(c->db->dict);// 判断是否获取全部allkeys = (pattern[0] == '*' && plen == 1);// 遍历迭代器while ((de = dictNext(di)) != NULL){// 获取当前遍历的keysds key = dictGetKey(de);robj *keyobj;// 如果是获取全部key 或是 当前的key符合匹配模式if (allkeys || stringmatchlen(pattern, plen, key, sdslen(key), 0)){// 当前当前的key转换成robj对象keyobj = createStringObject(key, sdslen(key));// 如果key没有过期,则加入响应缓存if (!keyIsExpired(c->db, keyobj)){addReplyBulk(c, keyobj);numkeys++;}decrRefCount(keyobj);}}// 遍历结束,释放对象dictReleaseIterator(di);setDeferredArrayLen(c, replylen, numkeys);
}

上面的源码中可以看到:

  1. keys 需要遍历全部key
  2. 遍历的所有的key都要和pattern 进行比较

所以在生产环境中,要很谨慎使用keys 命令,避免遍历过多的key而阻塞。

关键字:高唐网页定制_分销系统微信_百度手机助手下载安装_seo学习

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: