使用规范
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等一些聚合操作
标签:常用,存储,严禁,redis,规范,内存,key,Redis From: https://www.cnblogs.com/xiedy001/p/16914712.html