redis使用Big key的问题

文章目录

  • BigKey带来的问题
  • 业务场景
  • 具体现象
  • 解决思路

BigKey带来的问题

  1. 客户端执行命令的时延变大:对大Key进行的慢操作会导致后续的命令被阻塞,从而导致一系列慢查询。

  2. 引发操作阻塞:Redis内存达到maxmemory参数定义的上限引发操作阻塞或重要的Key被逐出,甚至引发内存溢出(Out Of Memory)。

  3. 容易造成集群分片不均的情况:集群架构下,由于集群采用的是分片设计理念,每个具体的Key只能分布到某一个具体的分片节点上,某个数据分片的内存使用率远超其他数据分片,无法使数据分片的内存资源达到均衡。

  4. 导致实例流控:对大Key高频率的读会使得实例出方向带宽被占满,产生大量命令超时或者慢查询,导致流控,致使自身服务变慢,同时易波及相关的服务。

  5. 导致主备倒换:对大Key执行危险的DEL操作可能会易造成主库较长时间的阻塞,进而可能引发同步中断或主备倒换。

业务场景

比如互联网系统中需要保存用户最新 1万 个粉丝的业务,比如一个用户个人信息缓存,包括基本资料、关系图谱计数、发 feed 统计等。微博的 feed 内容缓存也很容易出现,一般用户微博在 140 字以内,但很多用户也会发表 1千 字甚至更长的微博内容,这些长微博也就成了大 key

问题实质:

  • String本身比较大
  • set,hash内个数比较大

具体现象

系统会往Redis里存一个大Key(value值大小有400MB多),Redis是集群版,8GB 8节点的,实际存储时只会将这个key放到一个节点中,这样这一个节点成为了整个系统的瓶颈。而且扩容也无法解决该问题。如图是存储逻辑图
在这里插入图片描述

解决思路

主要解决思路就是:平均流量。就是将原来打到一个节点上的流量分摊到所有节点上,提升Redis的性能。

按业务逻辑拆分

比如我们Redis存储的数据是全国的数据集合,那么按照省行政区进行拆分,这样一个Key就能分成34个key。进一步细化还可按照市来拆分,这样会有300多个key,分布到Redis集群上更加均匀
在这里插入图片描述
小key可以加后缀:省id,查询时先判定是哪一个省,再拼接key查。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/443461.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RK3588平台开发系列讲解(视频篇)H.264码流结构介绍

文章目录 一、 码流查看工具二、 I帧、 P帧、 B帧三、序列四、GOP, 即关键帧间隔五、片和宏块沉淀、分享、成长,让自己和他人都能有所收获!😄 📢H.264码流结构介绍。 一、 码流查看工具 ① H.264码流查看工具: Elecard_streamEye、 Elecard StreamEye Tools、 Special…

游戏发行代理服务商需要具备什么能力?

在游戏产业的竞争激烈环境下, 游戏发行代理服务商扮演着至关重要的角色。他们不仅连接着游戏开发者和玩家,还需要具备一系列关键能力,以确保游戏的成功发行和市场推广。本文将探讨游戏发行代理服务商所需的关键能力。 1、市场洞察与策略制定&…

【Pwn | CTF】BUUCTF test_your_nc1

天命:时隔两年,又杀回了pwn这里 拿到题目的提示,测试你的nc工具 这题直接连接就可以了,windows装了nc工具,直接耍 nc node5.buuoj.cn 28930 下面给一点nc命令的解释,文心一言得出来的 nc命令是一个用于网…

VUE3子表格嵌套分页查询互相干扰的问题解决

VUE3在表格中嵌套子表格子表格的分页查询互相干扰的问题解决 简单嵌套 如果不需要做子表格的分页查询,那么可以直接在主表格中嵌套子表格,有两种方式;一种是主表格加载的同时加载子表格数据,另一种是点击展开时加载子表格数据&…

【格密码基础】:详解Ring-SIS问题

目录 一. 介绍 二. Ring-SIS问题相关的参数 三. Ring-SIS问题定义 四. 相比SIS问题的优点 五. 与SIS问题之间的关系 一. 介绍 在1998年,有关多项式环密码系统NTRU被提出。Ajtai提出了原始的SIS问题。 在2002年,Micciancio发现可以将这两者结合&am…

python爬虫2

1.table 是表格&#xff0c;tr是行&#xff0c;td是列 ul li是无序列标签用的较多&#xff0c;ol li是有序列标签 最基本的结构 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title> Title </title>…

外汇监管牌照解析:确保交易安全与合规性

外汇交易中&#xff0c;资金安全与平台监管是大家最关心的话题。监管是评估外汇经纪商是否值得信赖、是否具备相关资质的关键依据&#xff0c;因此选择一家拥有海外合法监管的经济商至关重要。 那么&#xff0c;今天我们就来聊聊全球权威的几大监管机构 — FCA、ASIC、NFA、FSA…

HarmonyOS 线程讲解(任务分发、线程通信)

一、简单说明 说起鸿蒙的线程就不得不说Android的线程&#xff0c;相信都知道在Android中&#xff0c;每一个应用都会有自己的主线程和其他的子线程&#xff0c;主线程负责处理大部分业务&#xff0c;负责UI的显示和更新等操作&#xff0c;所以又称之为UI线程&#xff0c;同时…

什么是事务?

事务 是一组操作的集合&#xff0c;它是一个不可分割的工作单位。事务会把所有的操作作为一个整体&#xff0c;一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功&#xff0c;要么同时失败。 1. 事务管理 怎么样来控制这组操作&#xff0c;让这组操作同时成功或…

InputNumber数字输入框(antd-design组件库)简单使用

1.InputNumber数字输入框 通过鼠标或键盘&#xff0c;输入范围内的数值。 2.何时使用 当需要获取标准数值时。 组件代码来自&#xff1a; 数字输入框 InputNumber - Ant Design 3.本地验证前的准备 参考文章【react项目antd组件-demo:hello-world react项目antd组件-demo:hello…

十分钟学会用springboot制作微信小程序富文本编辑器

1.1 富文本模型设计 在构建富文本编辑器系统时&#xff0c;首先需要设计一个合适的富文本模型。 CREATE TABLE IF NOT EXISTS rich_texts (id INT PRIMARY KEY AUTO_INCREMENT,title VARCHAR(255),content TEXT,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );这个表包括…

Flink CEP实现10秒内连续登录失败用户分析

1、什么是CEP&#xff1f; Flink CEP即 Flink Complex Event Processing&#xff0c;是基于DataStream流式数据提供的一套复杂事件处理编程模型。你可以把他理解为基于无界流的一套正则匹配模型&#xff0c;即对于无界流中的各种数据(称为事件)&#xff0c;提供一种组合匹配的…