1 什么是 Bigkey
下面这两种情况,在很多互联网公司都被认为是 Bigkey:
字符串类型:一般认为超过 10 KB 就是 Bigkey
非字符串类型:哈希、列表、集合、有序集合,体现在元素个数过多,比如超过 5000 个。
2 Bigkey 的危害
Bigkey 存在很多危害,具体体现在以这些方面:
内存空间不均匀:比如在 Redis cluster 或者 codis 中,会造成节点的内存使用不均匀。
阻塞:因为 Redis 单线程特性,如果操作某个 Bigkey 耗时比较久,则后面的请求会被阻塞。
过期时可能阻塞:如果 Bigkey 设置了过期时间,当过期后,这个 key 会被删除,假如没有使用 Redis 4.0 的过期异步删除,就会存在阻塞 Redis 的可能性,并且慢查询中查不到(因为这个删除是内部循环事件)。
3 怎么发现 Bigkey
那么怎么知道某个实例中是否有 Bigkey 呢?这里介绍几个常见的用法:
3.1 自带的 Bigkeys 参数查找
redis-cli -p 6301 --bi