当前位置: 首页 > news >正文

Redis 如何解决大 key 问题

前言

嗨👋,大家好,我是雪荷。做为一个后端开发,Redis 是我们经常接触到的一个非关系行数据库。其对我们系统开发和优化有着举足轻重的作用,但是随着业务和用户迅速增长,也会滋生许多的问题,而大 key 就是其中之一。

什么是大 key?

顾名思义,大 key 就是占用内存很大的 key,当然这是我们开发者认为的,而官方对于此概念没有明确的解释。

根据阿里巴巴开发规范解释,有以下 3 种情况可以判定为大 key:

  1. string 类型的数据大于 1M

  2. hash 类型的数据大于 100M

  3. zset 类型的数据成员超过 1000 个

当然以上是阿里给的一个参考,具体还得看业务和服务器配置。

如何解决大 key 呢?

找出大 key

在解决大 key 之前,需要找到哪些是大 key,可以通过redic-cli --bigkeys查看大 key。

解决大 key

开发层面

在开发层面我们可以:

  1. 对数据进行压缩,减少数据的体积

  2. 将大 key 拆分为多个小 key

  3. 选择合适的数据结构,如对象利用 hash 存储,列表用 set 或者 list 存储,对于需要排序的列表用 zset 存储

业务层面
  1. 仅存储必要或者重要的数据字段,比如存储用户时,对于地址或者年龄等字段进行舍弃存储

数据分布层面

如果我们项目搭建了 redis 集群,可以将大 key 进行拆分,并分散到不同服务器实例上。

开源项目

网址:厚米匹配系统

前端地址:GitHub - dnwwdwd/homieMatching-fronted: homie 匹配系统前端,基于 vuehomie 匹配系统是一个移动端网页的在线云交友平台。实现了按标签匹配、查找用户,基于 Redis GEO 实现搜索附近用户,同时个人还可以建队、组队以打造个人学习队伍。除了添加好友、搜索好友外,还基于 Websocket 实现好友间私聊,方便用户寻找志同道合的学习搭子。

后端地址:GitHub - dnwwdwd/homieMatching: homie 匹配系统是一个移动端网页的在线云交友平台。实现了按标签匹配、查找用户,基于 Redis GEO 实现搜索附近用户,同时个人还可以建队、组队以打造个人学习队伍。除了添加好友、搜索好友外,还基于 Websocket 实现好友间私聊,方便用户寻找志同道合的学习搭子。

欢迎👏大家体验网站也帮忙给我点点🌟哈,真的十分感谢各位,如果任何讲的不对的地方请及时指正。另外,最近在重构 BI 项目(GitHub - dnwwdwd/Lingxi-BI: 灵犀BI-专业的智能生成商业报表的项目),感兴趣的可以点点🌟,谢谢大家。

http://www.lryc.cn/news/521720.html

相关文章:

  • 驱动开发系列33 - Linux Graphics mesa Intel驱动介绍
  • 【华为OD-E卷 - 整数编码 100分(python、java、c++、js、c)】
  • vue3 uniapp封装一个瀑布流组件
  • Android Room 持久化库的介绍及使用方法
  • Go语言中http.Transport的Keep-Alive配置与性能优化方法
  • 设计模式03:行为型设计模式之策略模式的使用情景及其基础Demo
  • C# 多线程 Task TPL任务并行
  • 【matlab】matlab知识点及HTTP、TCP通信
  • kalilinux - msf和永恒之蓝漏洞
  • 网络安全测评质量管理与标准解读
  • Cesium根据地图的缩放zoom实现不同级别下geojson行政边界的对应展示
  • Linux初识:【shell命令以及运行原理】【Linux权限的概念与权限管理】
  • 深入剖析 Wireshark:网络协议分析的得力工具
  • 【AIGC】SYNCAMMASTER:多视角多像机的视频生成
  • PyTorch框架——基于深度学习YOLOv5神经网络水果蔬菜检测识别系统
  • Redisson中红锁(RedLock)的实现
  • 小结:路由器和交换机的指令对比
  • 使用yarn命令创建Vue3项目
  • Three.js+Vue3+Vite应用lil-GUI调试开发3D效果(三)
  • K8S集群常用命令
  • 【优先算法】滑动窗口--(结合例题讲解解题思路)(C++)
  • mayavi -> python 3D可视化工具Mayavi的安装
  • 【C++】B2112 石头剪子布
  • 【Vue】vue3 video 保存视频进度,每次进入加载上次的视频进度
  • C# 25Dpoint
  • 如何制作一个高质量的 Dockerfile 镜像:从入门到实践
  • Linux 机器学习
  • 青少年编程与数学 02-006 前端开发框架VUE 25课题、UI数据
  • css实现响应式详解
  • python-应用自动化操作方法集合