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.mzph.cn/news/658770.shtml

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

相关文章

前端Web开发

安装flask框架 pip install flask 导入flask模块 from flask import Flask 【可能遇到的问题】 出现了如下警告: WARNING: You are using pip version 21.2.4; however, version 22.0.4 is available.You should consider upgrading via the D:\Python\python…

德国布局离子阱量子计算机!德国电信与奥地利量子公司AQT达成合作

​内容来源:量子前哨(ID:Qforepost) 编辑丨慕一 编译/排版丨琳梦 璧园 深度好文:1000字丨8分钟阅读 近期,德国电信宣布,其子公司T-Systems与奥地利量子计算公司Alpine Quantum Technologies …

ubuntu gedit主题更改

ubuntu16.04 gedit 编辑器又有首选项如何设置主题 这里下载主题 将主题XML复制到 /usr/share/gtksourceview-3.0/styles 文件夹内; 使用gsettings 命令设置喜欢的配色方案,使用方式如下:(实测不带.xml后缀哦) gsettings set org.gnome.gedi…

电气防火限流式保护器在可燃性粉尘危害场所的作用

安科瑞戴婷 摘要:文章阐述了可燃性粉尘的特点及可燃性粉尘环境粉尘爆炸的危害性,结合国家现行的电气产品规范的要求,通过一个提取车间内部粉尘爆炸危险区域的电气设计实例,系统阐述了可燃性粉尘危险环境的分区原则、电气设备选型…

Kotlin快速入门系列11

Kotlin的集合 集合类 Java类库有一套相当完整的容器集合类用来持有对象。跟Java一样,集合类存放的都是对象的引用,而非对象本身(我们经常说的集合指的是集合中对象的引用),Kotlin的集合类是在Java的集合类库基础上进行的优化,新引…

第九节HarmonyOS 常用基础组件21-ImageAnimator

1、描述 提供帧动画组件来实现逐帧播放图片的能力&#xff0c;可以配置需要播放的图片列表&#xff0c;每张图片可以配置时长。 2、接口 ImageAnimator() 3、属性 参数名 参数类型 描述 images Array<ImageFrameInfo> 设置图片帧信息集合&#xff0c;每一帧的帧…

Python实现avif图片转jpg格式并识别图片中的文字

文章目录 一、图片识别文字1、导包2、代码实现3、运行效果 二、avif格式图片转jpg格式1、导包2、代码实现3、运行效果4、注意事项 三、Python实现avif图片转jpg格式并识别文字全部代码 在做数据分析的时候有些数据是从图片上去获取的&#xff0c;这就需要去识别图片上的文字。P…

C# 多线程(2)——线程同步

目录 1 线程不安全2 线程同步方式2.1 简单的阻塞方法2.2 锁2.2.1 Lock使用2.2.2 互斥体Mutex2.2.3 信号量Semaphore2.2.3 轻量级信号量SemaphoreSlim2.2.4 读写锁ReaderWriterLockSlim 2.3 信号同步2.3.1 AutoResetEvent2.3.1.1 AutoResetEvent实现双向信号 2.3.2 ManualResetE…

【算法与数据结构】300、LeetCode最长递增子序列

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;   程序如下&#xff1a; class Solution { public:int lengthOfLIS(vector<int>& nums)…

函数高级.

函数高级 1. 函数嵌套1.1 函数在作用域中1.2 函数定义的位置1.3 嵌套引发的作用域问题练习题 2.闭包3.装饰器3.1 第一回合3.2 第二回合3.3 第三回合优化伪应用场景重要补充&#xff1a;functools 总结作业 各位小伙伴想要博客相关资料的话关注公众号&#xff1a;chuanyeTry即可…

广告营销为什么需要使用代理IP

在广告营销中使用代理IP有几个主要原因 绕过限制和封禁 某些广告平台或网站可能会限制或封禁特定IP地址或IP地址范围&#xff0c;以防止滥用或欺诈行为。使用代理IP可以帮助您绕过这些限制&#xff0c;使您能够在被封禁的IP范围之外进行广告投放。 地理定位和目标市场 广告…

知识点积累系列(六)操作系统(Linux+Windows+MacOS)篇【持续更新】

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 知识点积累 系列文章的第六篇&#xff0c;记录日常学习中遇到的 操作系统相关 的知识点&#xff0c;包括 Linux、Windows、MacOS等 1.Linux相关 1.1.shell脚本 1.2.命令相关 1.2.1.vim命令 1.2.2.nslookup命…

GPT-4 Vision调试任何应用,即使缺少文本日志 升级Streamlit七

GPT-4 Vision 系列: 翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式一翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式二翻译: GPT-4 Vision静态图表转换为动态数据可视化 升级Streamlit 三翻译: GPT-4 Vision从图像转换为完全可编辑的表格 升级St…

本地配置Joplin Server用于Joplin笔记同步并实现公网远程访问

文章目录 1. 安装Docker2. 自建Joplin服务器3. 搭建Joplin Sever4. 安装cpolar内网穿透5. 创建远程连接的固定公网地址 Joplin 是一个开源的笔记工具&#xff0c;拥有 Windows/macOS/Linux/iOS/Android/Terminal 版本的客户端。多端同步功能是笔记工具最重要的功能&#xff0c;…

LabVIEW潜油电泵数据采集系统

LabVIEW潜油电泵数据采集系统 介绍一个基于LabVIEW的潜油电泵数据采集系统。该系统目的是通过高效的数据采集和处理&#xff0c;提高潜油电泵的性能监控和故障诊断能力。 系统由硬件和软件两部分组成。硬件部分主要包括数据采集卡、传感器和电泵等&#xff0c;而软件部分则是…

IMX6LL|打造自己的驱动总线

xbus&#xff1a;打造自属的驱动总线 驱动总线 软件与硬件代码分离&#xff0c;提高程序的复用性 device–关联硬件代码driver_devices–关联软件代码bus_type–统一管理、设置match匹配规则 设备驱动模型体现分离思想 bus-xbus-devices-drivers 总线管理 buses_init()函…

鸿蒙系统扫盲(七):勘误补充总结,收个尾

这是笔者鸿蒙扫盲系列的最后一篇了&#xff0c;准备对过去的六篇扫盲系列文章&#xff0c;错误的地方做一些勘误&#xff0c;并且补充更新一些朋友们感兴趣的知识&#xff0c;最后收个尾。 1.勘误&#xff0c;编译型语言和解释型语言 在鸿蒙系统扫盲&#xff08;五&#xff0…

网工内推 | 网络安全工程师专场,大平台,六险一金

01 汽车之家 招聘岗位&#xff1a;高级网络安全工程师 职责描述&#xff1a; 1、负责公司网站、系统与产品的漏洞扫描、渗透测试与安全评估工作&#xff1b; 2、负责公司安全系统与安全设备的运维&#xff0c;负责公司网络安全监控管理&#xff1b; 3、负责公司安全事件的应急…

社区投稿|Desig质押聚合器功能,帮助用户选出更适合的质押策略

在Sui上&#xff0c;不同的质押协议提供收益各异的产品&#xff0c;因此用户面临着众多可以质押token的协议&#xff0c;眼花缭乱无从选择。Desig质押聚合器功能现已整合到Desig钱包扩展中&#xff0c;极大地简化了寻找质押策略的流程。事实上&#xff0c;其智能质押功能支持完…

记录:Windows上QML程序打包

0.本文修改记录 &#xff08;2019-9-3&#xff09; 修改了VC环境相关的内容 &#xff08;2020-3-5&#xff09; 修改了QML模块相关的内容 &#xff08;2022-8-31&#xff09;one-rabbit大佬指出打包命令的参数错误&#xff0c;根据文档可知&#xff1a;qmldir应该为exe对应项…