Redis SCAN命令

打印 上一主题 下一主题

主题 564|帖子 564|积分 1692

1.  获取指定前缀的key
需求描述:
Redis中有大量以xxx开头的key,在不使用keys命令的情况下,如何快速获取这些前缀的key
解决方案:

redis自带的scan命令可以解决这个问题
2.  SCAN命令
SCAN是一个基于游标的迭代器。这意味着在每次调用该命令时,服务器都会返回一个更新后的游标,用户需要在下一次调用中使用它作为游标参数。当游标设置为0时开始迭代,当服务器返回的游标为0时终止迭代。从游标值为0开始迭代,并调用SCAN直到返回的游标再次为0,这称为完整迭代。
时间复杂度:每次调用 O(1)。O(N) 用于完整的迭代,包括足够的命令调用以使光标返回 0。N 是集合内的元素数。
和scan命令相关的还有另外3个命令,分别是:


  • SCAN    迭代当前选定的Redis数据库中的一组键
  • SSCAN   迭代 Sets 类型的元素
  • HSCAN   迭代 Hash 类型的字段及其相关值
  • ZSCAN   迭代 Sorted Set 类型的元素及其相关分数

语法:
  1. SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]
复制代码
选项:
MATCH选项
    和KEYS命令类似,后面可以跟一个通配符
COUNT选项
    SCAN不能保证每次迭代返回的元素数量,但可以使用COUNT选项根据经验调整SCAN的行为。基本上,使用COUNT,用户指定了每次调用时从集合中检索元素所需完成的工作量。这只是实现的一个提示,但是一般来说,但是在大多数情况下,这种提示都是有效的(在数据量少的情况下,COUNT值与返回的结果数量不相等)。
TYPE选项
    可以使用 TYPE 选项要求 SCAN 仅返回与给定类型匹配的对象。 TYPE 选项仅在整个数据库 SCAN 上可用,而不是 HSCAN 或 ZSCAN 等。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

郭卫东

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表