97. 怎么优化 Redis 的内存占用?
推荐阅读 《Redis 的内存优化》
- redisObject 对象
- 缩减键值对象
- 共享对象池
- 字符串优化
- 编码优化
- 控制 key 的数量
? 一个 Redis 实例最多能存放多少的 keys?List、Set、Sorted Set 他们最多能存放多少元素?
一个 Redis 实例,最多能存放多少的 keys ,List、Set、Sorted Set 他们最多能存放多少元素。
理论上,Redis 可以处理多达 2^32 的 keys ,并且在实际中进行了测试,每个实例至少存放了 2 亿 5 千万的 keys。
任何 list、set、和 sorted set 都可以放 2^32 个元素。
? 假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是以某个固定的已知的前缀开头的,如果将它们全部找出来?
使用 keys
指令可以扫出指定模式的 key 列表。
- 对方接着追问:如果这个 Redis 正在给线上的业务提供服务,那使用
keys
指令会有什么问题? - 这个时候你要回答 Redis 关键的一个特性:Redis 的单线程的。
keys
指令会导致线程阻塞一段时间,线上服务会停顿,直到指令执行完毕,服务才能恢复。这个时候可以使用scan
指令,scan
指令可以无阻塞的提取出指定模式的 key 列表,但是会有一定的重复概率,在客户端做一次去重就可以了,但是整体所花费的时间会比直接用keys
指令长。