首页 > 数据库 >Redis 开发常用规范

Redis 开发常用规范

时间:2022-11-22 12:13:32浏览次数:57  
标签:常用 存储 严禁 redis 规范 内存 key Redis

使用规范

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

相关文章

  • django 常用功能
    如何给viewset的request添加参数验证:首先,编写相应的serializerclassXPushSerializer(serializers.ModelSerializer):task_id=serializers.CharField(required=Fals......
  • linux screen 常用
    安装 yuminstallscreen常用命令Use:screen[-opts][cmd[args]]or:screen-r[host.tty]Options:-4ResolvehostnamesonlytoIPv4address......
  • Golang常用的工具函数,无依赖,常更
    util.go//Executef()ntimesonfailfuncRetryHandler(nint,ffunc()(bool,error))error{ok,er:=f()ifok&&er==nil{returnnil}ifn-1>0......
  • redis 进阶
    附以下模块的使用场景,有些典型场景未考虑进去的情况,欢迎有经验的读者前来补充。前言假定使用者,已经在业务中熟练掌握了连接,SET,GET,SETEX。Redis还有一些其它的非常好的模块......
  • 换行、回车、空格等常用的ASCII码值
    换行符的ASCII码值为10,十六进制表示为0x0A回车符的ASCII码值为13,十六进制表示为0x0D空格符的ASCII码值为32,十六进制表示为0x20以下列出其他一些常用到的符号的ASCII码......
  • go安装redis扩展
    1.在github.com网站找到对应的扩展【goget下载】【https://github.com/gomodule/redigo】 2.在本地环境安装go的环境变量下安装使用命令【确认git已经安装成功】   3.......
  • ASP.NET CORE MVC 开发常用代码备份
    1.在页面中进行注入配置文件操作注册对象classProgram{staticvoidMain(){Host.CreateDefaultBuilder().ConfigureWebHostDefaults(builder=>......
  • Redis 总结
    原文链接:https://mp.weixin.qq.com/s/Wji__HzVrxgZapu7xymueQ1、什么是RedisRedis(RemoteDictionaryServer)是一个开源的、键值对型的数据存储系统。使用C语言编写,遵......
  • C#中byte[]字节数组复制的常用方法
    简单总结了5种字节数组的复制方法for循环实现复制较为原始的遍历写法,不太推荐byte[]data=newbyte[]{0,1,2,3,4,5,6,7,8,9};byte[]data1=newbyte[data.length]......
  • linux常用命令
    文件解压#压缩tar-czvftinyproxy.tar.gztinyproxy/#解压tar-zxvftinyproxy.tar.gz/usr/local/tinyproxy/软链接#ln-s文件或目录软链接的名称ln-s/va......