redis之从海量数据里查询某一固定前缀的key

这是面试官经常会问到的redis面试题:如何从海量(如10亿)数据中,找到某一固定前缀的10万个key?

1.KEYS pattern

查找所有符合给定模式 pattern 的 key 。

keys指令一次性返回所有匹配的key,如果键的数量过大,服务器会卡顿,对内存消耗和redis服务器都是隐患,对线上业务也有影响。

2.SCAN cursor [MATCH pattern] [COUNT count
SCAN 命令是一个基于游标的迭代器(cursor based iterator): SCAN 命令每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程。
当 SCAN 命令的游标参数被设置为 0 时, 服务器将开始一次新的迭代, 而当服务器向用户返回值为 0 的游标时, 表示迭代已结束。

SCAN 命令及其相关的 SSCAN 命令、 HSCAN 命令和 ZSCAN 命令都用于增量地迭代(incrementally iterate)一集元素(a collection of elements):

SCAN 命令用于迭代当前数据库中的数据库键。
SSCAN 命令用于迭代集合键中的元素。
HSCAN 命令用于迭代哈希键中的键值对。
ZSCAN 命令用于迭代有序集合中的元素(包括元素成员和元素分值)。

 

你可能感兴趣的:(redis)