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

使用keys指令可以扫出指定模式的key列表。 对方接着追问:如果这个redis正在给线上的业务提供服务,那使用keys 指令会有什么问题? 这个时候你要回答redis关键的一个特性:redis的单线程的。keys指令会 导致线程阻塞一段时间,线上服务会停顿,直到指令执行完毕,服务才能 恢复。这个时候可以使用scan指令,scan指令可以无阻塞的提取出指定 模式的key列表,但是会有一定的重复概率,在客户端做一次去重就可以 了,但是整体所花费的时间会比直接用keys指令长。

posted @ 2021-01-11 21:44  天宇轩-王  阅读(139)  评论(0编辑  收藏  举报