前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis 开发常用规范

Redis 开发常用规范

原创
作者头像
CodingCode
修改2021-06-01 10:14:16
4110
修改2021-06-01 10:14:16
举报

使用规范

1、冷热数据分离,不要将所有数据全部都放到Redis中

虽然Redis 支持持久化,但是Redis的数据存储全部都是在内存中,成本昂贵。建议根据业务场景只将高频热数据存储到Redis 中,其他低频数据可以使用es、mongoDb等存储方式,不仅节省内存成本,而且数据量小操作速度更快,效率更高。

2、不同的业务数据要分开存储

不相关的业务数据不要集中放到一个Redis实例中,建议新业务申请新的单独实例。Redis单线程处理,独立存储会减少不同业务互相操作的影响,提高请求响应速度;同时也避免单个实例内存数据量膨胀过大,在出现异常情况时可以更快恢复服务。

3、键值设计

规范Key的格式,合适的key,便于查看,统计,排错。其好处如下:

1、能够根据某类key进行数据清理

2、能够根据某类key进行数据更新

3、能够方便了解某类key的归属方和应用场景

4、为统一化、平台化做准备,减少技术变更

一般,一个 key 需要带以下维度:业务、key 用途、变量等,各个维度使用 : 进行分隔。

4、控制key的生命周期,redis不是垃圾桶

如果将redis定位为缓存Cache使用,对于存放的key一定要设置超时时间!因为不设置,这些key会一直占用内存不释放,造成极大的浪费,而且随着时间的推移会导致内存占用越来越大,直到达到服务器内存上限。 同时条件允许的情况下随机打散过期时间,防止集中过期。

5、对于必须要存储的大文本数据一定要压缩后存储

大文本【超过500字节】写入到redis时,一定要压缩后存储!大文本数据存入redis,除了带来极大的内存占用外,在访问量高时,很容易将网卡流量占满,造成整个服务器上的所有服务不可用,并引发雪崩效应,造成各个系统瘫痪。

6、连接数限制

连接的频繁创建和销毁,会浪费大量的系统资源,极限情况下会造成宿主机宕机。确保正确使用Redis客户端连接池配置。

操作限制

1、严禁使用keys

Keys 命令效率极低,属于 O(N)操作,会阻塞其他正常命令,在 cluster 上,会是灾难性的操作。严禁使用,DBA 应该 rename 此命令,从根源禁用。

2、严禁使用Flush

flush 命令会清空所有数据,属于高危操作。严禁使用,DBA 应该 rename 此命令,从根源禁用,仅 DBA 可操作。

3、严禁作为消息队列使用

没有非常特殊诉求,严禁将redis当作消息队列使用。redis当消息队列使用,会有容量、网络、效率、功能方面的多种问题。

4、严禁不设置范围的批量操作

redis 那么快,慢查询除了网络延迟,就属于这些批量操作函数。大多数线上问题都是由于这些函数引起。

1、[zset] 严禁对 zset 的不设范围操作

2、[hash] 严禁对大数据量 Key 使用 HGETALL

3、[key] Redis Cluster 集群的 mget 操作

4、[其他] 严禁使用 sunion, sinter, sdiff等一些聚合操作

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档