Redis常见问题及其场景问题

假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是以 某个固定的已知的前缀开头的,如果将它们全部找出来?

 

使用 keys 指令可以扫出指定模式的 key 列表。

对方接着追问:如果这个 redis 正在给线上的业务提供服务,那使用 keys 指令会

有什么问题?

这个时候你要回答 redis 关键的一个特性:redis 的单线程的。keys 指令会导致线

程阻塞一段时间,线上服务会停顿,直到指令执行完毕,服务才能恢复。这个时

候可以使用 scan 指令,scan 指令可以无阻塞的提取出指定模式的 key 列表,但

是会有一定的重复概率,在客户端做一次去重就可以了,但是整体所花费的时间

会比直接用 keys 指令长。

Java Program!
posted @ 2021-06-07 14:08  abcdefghijklmnop  阅读(74)  评论(0编辑  收藏  举报