Redis遵循哪些规范?
学习数据库要努力,但是不要急!今天的这篇文章《Redis遵循哪些规范?》将会介绍到等等知识点,如果你想深入学习数据库,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!
redis 功能强大,数据类型丰富,再快的系统,也经不住疯狂的滥用。通过禁用部分高风险功能,并挂上开发的枷锁,业务更能够以简洁、通用的思想去考虑问题,而不是绑定在某种实现上。
Redis 根据不同的用途,会有不同的持久化策略和逐出策略,所以,在使用和申请 Redis 集群前,请明确是用来做缓存还是存储。redis 的集群有主从和 cluster 两种模式,各有优缺点。以下规范不区分集群模式,我们分别从使用场景和操作限制两方面说明。
使用规范
冷热数据区分
虽然 redis支持持久化,但将所有数据存储在 redis 中,成本非常昂贵。建议将热数据 (如 QPS超过 5k) 的数据加载到 redis 中。低频数据可存储在 Mysql
、 ElasticSearch中
。
业务数据分离
不要将不相关的数据业务都放到一个 Redis
中。一方面避免业务相互影响,另一方面避免单实例膨胀,并能在故障时降低影响面,快速恢复。
消息大小限制
由于 Redis
是单线程服务,消息过大会阻塞并拖慢其他操作。保持消息内容在 1KB 以下是个好的习惯。严禁超过 50KB 的单条记录。消息过大还会引起网络带宽的高占用,持久化到磁盘时的 IO 问题。
连接数限制
连接的频繁创建和销毁,会浪费大量的系统资源,极限情况会造成宿主机当机。请确保使用了正确的 Redis
客户端连接池配置。
缓存 Key 设置失效时间
作为缓存使用的 Key
,必须要设置失效时间。失效时间并不是越长越好,请根据业务性质进行设置。注意,失效时间的单位有的是秒,有的是毫秒,这个很多同学不注意容易搞错。
缓存不能有中间态
缓存应该仅作缓存用,去掉后业务逻辑不应发生改变,万不可切入到业务里。第一,缓存的高可用会影响业务;第二,产生深耦合会发生无法预料的效果;第三,会对维护行产生肤效果。
扩展方式首选客户端 hash
小应用就算了
如单 redis
集群并不能为你的数据服务,不要着急扩大你的 redis
集群(包括 M/S 和 Cluster),集群越大,在状态同步和持久化方面的性能越差。 优先使用客户端 hash
进行集群拆分。如:根据用户 id 分 10 个集群,用户尾号为 0 的落在第一个集群。
操作限制
严禁使用 Keys
Keys
命令效率极低,属于 O(N)
操作,会阻塞其他正常命令,在 cluster
上,会是灾难性的操作。严禁使用,DBA
应该 rename
此命令,从根源禁用。
严禁使用 Flush
flush
命令会清空所有数据,属于高危操作。严禁使用,DBA
应该 rename
此命令,从根源禁用,仅 DBA
可操作。
严禁作为消息队列使用
如没有非常特殊的需求,严禁将 Redis
当作消息队列使用。Redis
当作消息队列使用,会有容量、网络、效率、功能方面的多种问题。如需要消息队列,可使用高吞吐的 Kafka
或者高可靠的 RocketMQ
。
严禁不设置范围的批量操作
redis
那么快,慢查询除了网络延迟,就属于这些批量操作函数。大多数线上问题都是由于这些函数引起。
1、[zset] 严禁对 zset 的不设范围操作
ZRANGE
、 ZRANGEBYSCORE
等多个操作 ZSET
的函数,严禁使用 ZRANGE myzset 0 -1
等这种不设置范围的操作。请指定范围,如 ZRANGE myzset 0 100
。如不确定长度,可使用 ZCARD
判断长度
2、[hash] 严禁对大数据量 Key 使用 HGETALL
HGETALL
会取出相关 HASH
的所有数据,如果数据条数过大,同样会引起阻塞,请确保业务可控。如不确定长度,可使用 HLEN
先判断长度
3、[key] Redis Cluster 集群的 mget 操作
Redis Cluster
的 MGET
操作,会到各分片取数据聚合,相比传统的 M/S
架构,性能会下降很多,请提前压测和评估
4、[其他] 严禁使用 sunion, sinter, sdiff等一些聚合操作
禁用 select 函数
select
函数用来切换 database
,对于使用方来说,这是很容易发生问题的地方,cluster
模式也不支持多个 database
,且没有任何收益,禁用。
禁用事务
redis
本身已经很快了,如无大的必要,建议捕获异常进行回滚,不要使用事务函数,很少有人这么干。
禁用 lua 脚本扩展
lua
脚本虽然能做很多看起来很 cool
的事情,但它就像是 SQL
的存储过程,会引入性能和一些难以维护的问题,禁用。
禁止长时间 monitor
monitor
函数可以快速看到当前 redis
正在执行的数据流,但是当心,高峰期长时间阻塞在 monitor
命令上,会严重影响 redis
的性能。此命令不禁止使用,但使用一定要特别特别注意。
Key 规范
Redis
的 Key
一定要规范,这样在遇到问题时,能够进行方便的定位。Redis
属于无 scheme
的 KV
数据库,所以,我们靠约定来建立其 scheme
语义。其好处:
能够根据某类 key 进行数据清理
能够根据某类 key 进行数据更新
能够方面了解到某类 key 的归属方和应用场景
为统一化、平台化做准备,减少技术变更
一般,一个 key
需要带以下维度:业务、key 用途、变量等,各个维度使用 : 进行分隔,以下是几个 key 的实例:
user:sex 用户 10002232 的性别
msg:achi 201712 的用户发言数量排行榜
本篇关于《Redis遵循哪些规范?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于数据库的相关知识,请关注golang学习网公众号!

- 上一篇
- 如何使用golang函数包装器

- 下一篇
- 如何在Navicat中导入MySQL数据库?
-
- 悲凉的胡萝卜
- 好细啊,已收藏,感谢up主的这篇技术文章,我会继续支持!
- 2023-05-09 06:24:44
-
- 仁爱的猫咪
- 真优秀,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,帮助很大,总算是懂了,感谢楼主分享技术文章!
- 2023-05-08 09:38:13
-
- 外向的面包
- 这篇博文真是及时雨啊,细节满满,写的不错,已加入收藏夹了,关注师傅了!希望师傅能多写数据库相关的文章。
- 2023-05-08 06:46:52
-
- 数据库 · Redis | 17小时前 | redis redis-check-rdb 数据文件损坏 redis-check-aof 恢复步骤
- Redis数据文件损坏后的恢复攻略
- 465浏览 收藏
-
- 数据库 · Redis | 1天前 | redis Django 缓存 settings.py django-redis
- Django项目Redis缓存集成详解步骤
- 458浏览 收藏
-
- 数据库 · Redis | 2天前 |
- Redis启动时如何指定配置文件
- 225浏览 收藏
-
- 数据库 · Redis | 2天前 |
- Redis启动后无法访问?排查与解决攻略
- 498浏览 收藏
-
- 数据库 · Redis | 3天前 |
- Redis启动后访问异常?快速排查与解决
- 206浏览 收藏
-
- 数据库 · Redis | 3天前 |
- 检查Redis版本及升级指南
- 335浏览 收藏
-
- 数据库 · Redis | 4天前 |
- 检查Redis版本及升级指南
- 134浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 508次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 484次学习
-
- 笔灵AI生成答辩PPT
- 探索笔灵AI生成答辩PPT的强大功能,快速制作高质量答辩PPT。精准内容提取、多样模板匹配、数据可视化、配套自述稿生成,让您的学术和职场展示更加专业与高效。
- 23次使用
-
- 知网AIGC检测服务系统
- 知网AIGC检测服务系统,专注于检测学术文本中的疑似AI生成内容。依托知网海量高质量文献资源,结合先进的“知识增强AIGC检测技术”,系统能够从语言模式和语义逻辑两方面精准识别AI生成内容,适用于学术研究、教育和企业领域,确保文本的真实性和原创性。
- 35次使用
-
- AIGC检测-Aibiye
- AIbiye官网推出的AIGC检测服务,专注于检测ChatGPT、Gemini、Claude等AIGC工具生成的文本,帮助用户确保论文的原创性和学术规范。支持txt和doc(x)格式,检测范围为论文正文,提供高准确性和便捷的用户体验。
- 37次使用
-
- 易笔AI论文
- 易笔AI论文平台提供自动写作、格式校对、查重检测等功能,支持多种学术领域的论文生成。价格优惠,界面友好,操作简便,适用于学术研究者、学生及论文辅导机构。
- 47次使用
-
- 笔启AI论文写作平台
- 笔启AI论文写作平台提供多类型论文生成服务,支持多语言写作,满足学术研究者、学生和职场人士的需求。平台采用AI 4.0版本,确保论文质量和原创性,并提供查重保障和隐私保护。
- 40次使用
-
- redis复制有可能碰到的问题汇总
- 2023-01-01 501浏览
-
- 使用lua+redis解决发多张券的并发问题
- 2023-01-27 501浏览
-
- Redis应用实例分享:社交媒体平台设计
- 2023-06-21 501浏览
-
- 使用Python和Redis构建日志分析系统:如何实时监控系统运行状况
- 2023-08-08 501浏览
-
- 如何利用Redis和Python实现消息队列功能
- 2023-08-16 501浏览