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

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

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

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

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

 

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

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

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

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

 

找出所有k1开头的key

 

Scan指令:

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

 

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

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

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

 

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

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

 

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

 

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

你可能感兴趣的:(Redis)