如何从海量Key里查询出某一固定前缀的Key?

1.使用keys执行(对线上业务存在很大的影响)

2.使用scan指令:无阻塞的提取出指定模式的key列表,scan每次执行只会返回少量元素,所以可以用于生产环境,而不会像keys命令带来的可能堵塞服务器的问题。

JAVA面试准备之Redis 如何从海量Key里查询出某一固定前缀的Key

 

使用keys对线上的业务的影响

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

KEYS指令一次性返回所有匹配的key

键的数量过大会使服务卡顿,对于内存的消耗和Redis服务器都是一个隐患

 

找出所有k1开头的key

JAVA面试准备之Redis 如何从海量Key里查询出某一固定前缀的Key

 

Scan指令:

要求返回k1开头的key,数量10个

JAVA面试准备之Redis 如何从海量Key里查询出某一固定前缀的Key

 

第一个数据是当前遍历的游标,数量不一定是10个。

使用返回的游标进行遍历,获取新一轮的数据:

JAVA面试准备之Redis 如何从海量Key里查询出某一固定前缀的Key

 

Scan无法保证返回的值之前没有返回过,所以可以在程序中设置一个set来存储返回的key。

一直到游标返回为0,代表遍历结束。

 

JAVA中会有相关的JAR(Jedis)包,执行redis对应的指令

 

JAVA面试准备之Redis 如何从海量Key里查询出某一固定前缀的Key

相关文章:

  • 2022-12-23
  • 2021-07-01
  • 2021-09-08
  • 2021-06-07
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-11-23
  • 2022-12-23
  • 2021-05-13
  • 2021-05-01
  • 2022-12-23
  • 2020-02-27
  • 2021-11-24
相关资源
相似解决方案