当前位置:首页 > Redis > 正文内容

redis的bigkey问题如何解决

phpmianshi1年前 (2019-04-12)Redis167

寻找big key

有如下几种方法

  1. redis-cli自带--bigkeys,例如:redis-cli -h -a --bigkeys

  2. 获取生产Redis的rdb文件,通过rdbtools分析rdb生成csv文件,再导入MySQL或其他数据库中进行分析统计,根据size_in_bytes统计bigkey

  3. 通过python脚本,迭代scan key,每次scan 1000,对扫描出来的key进行类型判断,例如:string长度大于10K,list长度大于10240认为是big bigkeys

  4. 其他第三方工具,例如:redis-rdb-cli
    地址:
    https://github.com/leonchen83/redis-rdb-cli


优化big key

  1. 优化big key的原则就是string减少字符串长度,list、hash、set、zset等减少成员数

  2. 以hash类型举例来说,对于field过多的场景,可以根据field进行hash取模,生成一个新的key,例如原来的
    hash_key:{filed1:value, filed2:value, filed3:value ...},可以hash取模后形成如下key:value形式
    hash_key:mod1:{filed1:value}
    hash_key:mod2:{filed2:value}
    hash_key:mod3:{filed3:value}
    ...
    取模后,将原先单个key分成多个key,每个key filed个数为原先的1/N

  3. string类型的big key,如文章正文,建议不要存入redis,用文档型数据库MongoDB代替或者直接缓存到CDN上等方式优化


版权声明:本文由PHP面试资料网发布,如需转载请注明出处。
分享给朋友:

相关文章

Redis中 面试必考

一. Redis性能如此高的原因纯内存操作,内存的读写速度非常快单线程,保证了每个操作的原子性,省去了很多上下文切换线程的时间高效的数据结构,如压缩表,对短数据进行压缩存储,再如,跳表,使用有序的数据...

Redis Hyperloglog实现UV数据统计

Redis  自2.8.9起可用时间复杂度: O(1)添加每个元素。HyperLogLog 是一种概率数据结构,用来估算数据的基数。数据集可以是网站访客的 IP 地址,E-mail 邮箱或者...

redis中分析key大小的几种方法

背景当redis被用作缓存时,有时我们希望了解key的大小分布,或者想知道哪些key占的空间比较大。本文提供了几种方法。一. bigKeys这是redis-cli自带的一个命令。对整个redis进行扫...

redis的热key问题如何解决

概念其实热key问题说来也很简单,就是瞬间有几十万的请求去访问redis上某个固定的key,那么,这样会造成流量过于集中,达到物理网卡上限,从而导致这台redis的服务器宕机。那接下来这个key的请求...

Redis中主从复制的原理详解

主从复制的方式命令slaveof。优点:无需重启。缺点:不便于管理 // 命令行使用 slaveof ip port // 使用命令后自身...

Redis 和 memache 缓存的区别

1.数据类型Redis数据类型丰富,支持set list hash等类型memcache支持简单数据类型,需要客户端自己处理复杂对象2.持久性redis支持数据落地持久化存储,并不是所有的数据都一直存...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。