redis中如果某一个key-value值过大,在访问量比力高的时候就可能会造成网络带宽不足,例如一个value值存储大小为5MB,同时有5000个并发访问,网络带宽必要209.7 Gbps,这必然会造成网络阻塞。其次redis中是单线程布局如果一个key-value值占用内存过大,传输时占用此线程时间过长,会影响其他数据的读取效率。
在办理大key题目时,首先我们的找出大key:
- redis-cli --bigkeys命令。可以用来找到某个实例5种数据类型(string、hash、list、set、zset)最大的key。
- 长处:不阻塞服务
- 缺点:信息较少(只有各类型最大的key信息),内容不敷精确(例如hash/list/set/zset都是以元素个数权衡大key,但实际上元素个数多不代表占用内存大)。
- redis-rdb-tools工具。redis实例上执行bgsave,然后对dump出来的rdb文件进行分析。
- 长处:获取信息更具体
- 缺点:必要离线操纵,获取结果时间较长
- 使用及时Top key工具
- 长处:准确性高、对性能几乎无影响。
- 缺点:展示的Key数量有一定限制,但能满意通例场景下的需求。
所以我们在计划key值时应该只管避免大key题目的出现,以下是我的办理思绪:
1、大key题目我们只管在计划之初就避免此题目的产生,合理计划业务访问量较大的数据布局,只管避免在访问量较大的同时数据内存也过大
2、及时扫除无效数据,例如list过长此中又存储着很多无效数据、hash中有大量无效数据,避免无效数据占用内存
3、必要时可以将redis中数据进行压缩,用时间换取空间
4、硬件上可以增加网络带宽提高网络传输
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |