前言
嗨👋,大家好,我是雪荷。做为一个后端开发,Redis 是我们经常接触到的一个非关系行数据库。其对我们系统开发和优化有着举足轻重的作用,但是随着业务和用户迅速增长,也会滋生许多的问题,而大 key 就是其中之一。
什么是大 key?
顾名思义,大 key 就是占用内存很大的 key,当然这是我们开发者认为的,而官方对于此概念没有明确的解释。
根据阿里巴巴开发规范解释,有以下 3 种情况可以判定为大 key:
-
string 类型的数据大于 1M
-
hash 类型的数据大于 100M
-
zset 类型的数据成员超过 1000 个
当然以上是阿里给的一个参考,具体还得看业务和服务器配置。
如何解决大 key 呢?
找出大 key
在解决大 key 之前,需要找到哪些是大 key,可以通过redic-cli --bigkeys
查看大 key。
解决大 key
开发层面
在开发层面我们可以:
-
对数据进行压缩,减少数据的体积
-
将大 key 拆分为多个小 key
-
选择合适的数据结构,如对象利用 hash 存储,列表用 set 或者 list 存储,对于需要排序的列表用 zset 存储
业务层面
-
仅存储必要或者重要的数据字段,比如存储用户时,对于地址或者年龄等字段进行舍弃存储
数据分布层面
如果我们项目搭建了 redis 集群,可以将大 key 进行拆分,并分散到不同服务器实例上。
开源项目
开源项目
网址:厚米匹配系统
前端地址:GitHub - dnwwdwd/homieMatching-fronted: homie 匹配系统前端,基于 vuehomie 匹配系统是一个移动端网页的在线云交友平台。实现了按标签匹配、查找用户,基于 Redis GEO 实现搜索附近用户,同时个人还可以建队、组队以打造个人学习队伍。除了添加好友、搜索好友外,还基于 Websocket 实现好友间私聊,方便用户寻找志同道合的学习搭子。
后端地址:GitHub - dnwwdwd/homieMatching: homie 匹配系统是一个移动端网页的在线云交友平台。实现了按标签匹配、查找用户,基于 Redis GEO 实现搜索附近用户,同时个人还可以建队、组队以打造个人学习队伍。除了添加好友、搜索好友外,还基于 Websocket 实现好友间私聊,方便用户寻找志同道合的学习搭子。
欢迎👏大家体验网站也帮忙给我点点🌟哈,真的十分感谢各位,如果任何讲的不对的地方请及时指正。另外,最近在重构 BI 项目(GitHub - dnwwdwd/Lingxi-BI: 灵犀BI-专业的智能生成商业报表的项目),感兴趣的可以点点🌟,谢谢大家。