使用规范

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等一些聚合操作

原文地址:http://www.cnblogs.com/xiedy001/p/16914712.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性