阿里redis使用规范

阿里巴巴Redis使用规范 阿里巴巴28条Redis使用规范 立即下载

一、键值设计

1、key名设计

可读性和可管理性

以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id

阿里推荐的Redis使用规范,Redis就要这么用

 

简洁性

保证语义的前提下,控制key的长度,当key较多时,内存占用也不容忽视,例如:

阿里推荐的Redis使用规范,Redis就要这么用

 

不要包含特殊字符

反例:包含空格、换行、单双引号以及其他转义字符

2、value设计

拒绝bigkey

防止网卡流量、慢查询,string类型控制在10KB以内,hash、list、set、zset元素个数不要超过5000。

反例:一个包含200万个元素的list。

非字符串的bigkey,不要使用del删除,使用hscan、sscan、zscan方式渐进式删除,同时要注意防止bigkey过期时间自动删除问题(例如一个200万的zset设置1小时过期,会触发del操作,造成阻塞,而且该操作不会不出现在慢查询中(latency可查)),查找方法和删除方法

选择适合的数据类型

例如:实体类型(要合理控制和使用数据结构内存编码优化配置,例如ziplist,但也要注意节省内存和性能之间的平衡)

反例:

阿里推荐的Redis使用规范,Redis就要这么用

 

正例:

阿里推荐的Redis使用规范,Redis就要这么用

 

控制key的生命周期

redis不是垃圾桶,建议使用expire设置过期时间(条件允许可以打散过期时间,防止集中过期),不过期的数据重点关注idletime。

二、命令使用

1、O(N)命令关注N的数量

例如hgetall、lrange、smembers、zrange、sinter等并非不能使用,但是需要明确N的值。有遍历的需求可以使用hscan、sscan、zscan代替。

2、禁用命令

禁止线上使用keys、flushall、flushdb等,通过redis的rename机制禁掉命令,或者使用scan的方式渐进式处理。

3、合理使用select

redis的多数据库较弱,使用数字进行区分,很多客户端支持较差,同时多业务用多数据库实际还是单线程处理,会有干扰。

4、使用批量操作提高效率

原生命令:例如mget、mset。

非原生命令:可以使用pipeline提高效率。

但要注意控制一次批量操作的元素个数(例如500以内,实际也和元素字节数有关)。

注意两者不同:

原生是原子操作,pipeline是非原子操作。

pipeline可以打包不同的命令,原生做不到

pipeline需要客户端和服务端同时支持。

5、不建议过多使用Redis事务功能

Redis的事务功能较弱(不支持回滚),而且集群版本(自研和官方)要求一次事务操作的key必须在一个slot上(可以使用hashtag功能解决)

6、Redis集群版本在使用Lua上有特殊要求

1、所有key都应该由 KEYS 数组来传递,redis.call/pcall 里面调用的redis命令,key的位置,必须是KEYS array, 否则直接返回error,"-ERR bad lua script for redis cluster, all the keys that the script uses should be passed using the KEYS arrayrn" 2、所有key,必须在1个slot上,否则直接返回error, "-ERR eval/evalsha command keys must in same slotrn"

7、monitor命令

必要情况下使用monitor命令时,要注意不要长时间使用。

三、客户端使用

1、避免多个应用使用一个Redis实例

不相干的业务拆分,公共数据做服务化。

2、使用连接池

可以有效控制连接,同时提高效率,标准使用方式:

阿里推荐的Redis使用规范,Redis就要这么用

 

3、熔断功能

高并发下建议客户端添加熔断功能(例如netflix hystrix)

4、合理的加密

设置合理的密码,如有必要可以使用SSL加密访问(阿里云Redis支持)

5、淘汰策略

根据自身业务类型,选好maxmemory-policy(最大内存淘汰策略),设置好过期时间。

默认策略是volatile-lru,即超过最大内存后,在过期键中使用lru算法进行key的剔除,保证不过期数据不被删除,但是可能会出现OOM问题。

其他策略如下:

allkeys-lru:根据LRU算法删除键,不管数据有没有设置超时属性,直到腾出足够空间为止。

allkeys-random:随机删除所有键,直到腾出足够空间为止。

volatile-random:随机删除过期键,直到腾出足够空间为止。

volatile-ttl:根据键值对象的ttl属性,删除最近将要过期数据。如果没有,回退到noeviction策略。

noeviction:不会剔除任何数据,拒绝所有写入操作并返回客户端错误信息"(error) OOM command not allowed when used memory",此时Redis只响应读操作。

四、相关工具

1、数据同步

redis间数据同步可以使用:redis-port

2、big key搜索

redis大key搜索工具

3、热点key寻找

内部实现使用monitor,所以建议短时间使用facebook的redis-faina 阿里云Redis已经在内核层面解决热点key问题

五、删除bigkey

下面操作可以使用pipeline加速。

redis 4.0已经支持key的异步删除,欢迎使用。

1、Hash删除: hscan + hdel

阿里推荐的Redis使用规范,Redis就要这么用

 

2、List删除: ltrim

阿里推荐的Redis使用规范,Redis就要这么用

 

3、Set删除: sscan + srem

阿里推荐的Redis使用规范,Redis就要这么用

 

4、SortedSet删除: zscan + zrem

阿里推荐的Redis使用规范,Redis就要这么用

 

一文解读DeepSeek训练数据集 本文重点以DeepSeek为例,详细介绍预训练数据集相关内容。大语言模型LLM(如DeepSeek、ChatGPT、文心一言等)的“智慧”源于它们学习的海量数据集。简单来说,数据集就是模型的“知识库”,通常由互联网公开的文本、图片、视频等。这些数据需满足两个特点:规模大和多样性。规模大是指数据量可达千亿级词汇,让模型学习复杂规律;多样性则涵盖多领域(如科技、文学)、多语言、多形式(对话、新闻),帮助模型适应不同场景。例如,训练数据中既有百科知识,也有日常对话,模型才能既解答专业问题,又能闲聊。 阅读详情

相关推荐

缺陷检测-金属表面缺陷检测

1介绍 缺陷检测是工业视觉技术中最重要的组成部分。业务广泛,场景丰富,技术难点高、工作量大。针对不同的场景,选择不同的相机和

huneng1991的专栏 5248

阿里云redis的lua脚本报错踩坑记

脚本里命令的调用必须用KEYS ARRAY的形式 错误表现 ERR bad lua script for redis cluster, all the keys that the script uses should be passed using the KEYS array, and KEYS should not be in expression 解决办法 所有的redis.call这样的命令都要写成这种形式: redis.call('get', KEYS[1]), 第二个参数必须是KEYS[ind

cumt_TTR的专栏 2788

CiteSpace关键词聚类图谱含义详细解析

CiteSpace关键词聚类图谱含义详细解析 回顾上一次推文:CiteSpace关键词共现图谱含义详细解析 其中有一句: 当你人工已经可以很容易的进行归纳后,就不需要再利用CiteSpace聚类功能啦。 我们来看一下上次推文做出来的关键词共现图谱: 人工不好归纳!那怎么聚类呢? 此时便可使用CiteSpace的聚类功能啦! 如下所示:我们可以清晰地看到上边的关键词共现网络聚成了一个个不规则区域...

qq_39974284的博客 6万+

Redis集群模式使用Lua脚本的限制

由于前段时间自己写的redis定长队列使用了lua脚本,测试好好的,线上就报错了,还好不是什么大问题。因为目前测试环境单个实例,线上环境使用的是redis集群模式,所以已经踩了不少坑。其中key和arg都用lua变量,因为好几处使用了,正常来讲申明变量没什么问题,可是阿里集群对Lua脚本进行了限制,再通过错误信息,意思为,key的位置必须为数组,不能使用脚本变量。修改lua脚本,去掉key的local变量,改为KEYS[i]数组的形式,将数组直接传入进去。集群中Lua脚本的限制。

小强快跑~~ 2088

步科触摸屏编程

1.首先官网上下载kinco软件,然后再安装驱动,安装的方式是需要两个文件。把两个文件放到driver文件夹下面,然后设备管理器右键更新,手选driver文件夹,自动安装即可。 步科触摸屏驱动文件下载地址 2.按照步科触摸屏使用手册一步一步来建立工程 Kinco HMIware使用手册下载地址 登录界面 涉及到的是页面切换,用的是login window,然后只留下等级输入那个

MAYBE的博客 2万+

记录——影刀RPA高级操作题(二)——使用影刀RPA内置包和”Xpath“获取数据,获取数据写入目标MySQL

【代码】记录——影刀RPA高级操作题(二)——使用影刀RPA内置包和”Xpath“获取数据,获取数据写入目标MySQL。

m0_74824002的博客 841

阿里 推荐的 Redis 使用规范,太优雅了

非字符串的bigkey,不要使用del删除,使用hscan、sscan、zscan方式渐进式删除,同时要注意防止bigkey过期时间自动删除问题(例如一个200万的zset设置1小时过期,会触发del操作,造成阻塞,而且该操作不会不出现在慢查询中(latency可查)),查找方法和删除方法。关注公众号小黄鸭编程社区,回复关键字手册,获取最新开发手册。默认策略是volatile-lru,即超过最大内存后,在过期键中使用lru算法进行key的剔除,保证不过期数据不被删除,但是可能会出现OOM问题。

z1ztai的博客 425

告别懵圈!用CANoe 5640手把手带你跑通SomeIP TC8测试(附脚本思路)

本文详细解析了基于CANoe 5640的SomeIP TC8测试全流程,从环境搭建到结果分析,特别针对车载以太网测试中的SomeIP协议测试难点提供实战指南。通过典型测试用例SOMEIP_TEST_61,手把手教你配置CANoe工程、编写CAPL脚本,并解决常见问题,助力开发者高效完成协议验证。

weixin_30791095的博客 360

Redis 数据库铁律

Redis 是一个开源的高性能的 Key-Value 数据库,本文介绍了使用 Redis 时的开发规范,从键值设计、命令使用等方面进行说明,通过本文的介绍可以减少使用 Redis 过程中带来的问题。

一叶知秋的博客 868

MOOS-ivp实战:从零搭建水下机器人通信系统(Ubuntu 22.04版)

本文详细介绍了在Ubuntu 22.04系统上从零开始搭建MOOS-ivp水下机器人通信系统的完整实战流程。内容涵盖环境准备、核心安装、MOOSDB通信模型解析、自定义应用节点开发、以及调试监控工具链的使用,旨在帮助开发者快速掌握这一分布式机器人系统框架,构建稳定可靠的水下机器人通信与控制系统。

snow3的博客 633

SDFCOM_SWC警告深度剖析:从assign短路到时序标注失效的链路追踪

本文深入剖析了SDFCOM_SWC警告的根源,从assign短路到时序标注失效的全链路追踪。通过分析RTL设计中的assign语句陷阱、综合阶段的优化变形以及PrimeTime生成SDF文件的视角,提出了重构RTL设计、警告抑制和SDF生成优化等解决方案,帮助工程师有效避免时序标注问题。

weixin_42519985的博客 363

阿里云Redis开发规范

阿里云Redis开发规范 https://developer.aliyun.com/article/531067#slide-12 Redis开发规范解析(一)–键名设计 https://mp.weixin.qq.com/s?spm=a2c6h.12873639.0.0.69991feewaC06W&__biz=Mzg2NTEyNzE0OA==&mid=2247483663&idx=1&sn=7c4ad441eaec6f0ff38d1c6a097b1fa4&chksm

Eistert 1219

【光子AI / Photon.AI】manus 通用 Agent 的实现核心技术原理与应用

摘要 Manus是一款由国内团队开发的通用AI Agent,其核心技术原理基于多智能体协作架构、云端全能沙箱、规划-执行-反思循环等系统工程方法。与传统的对话式AI不同,Manus能够在独立的Linux虚拟机环境中自主规划并执行复杂任务,通过编写和运行代码来解决问题,具备强大的纠错能力和工具使用能力。 核心应用场景包括深度行业研究、自动化办公、生活助理、辅助编程和跨平台信息整合等。Manus的工程化落地优势体现在沙箱环境、多智能体调度和容错机制等方面,使其能够完成需要多步骤操作和多种工具调用的复杂任务,将A

AI天才研究院 666

Redis 设计规范-阿里

阿里云Redis开发规范 付磊-起扬2018-03-12 15:34:16浏览46560评论5 redis 数据库 string pipeline 数据同步 jedis 阿里云Redis redis规范 摘要:本文介绍了在使用阿里云Redis的开发规范,从键值设计、命令使用、客户端使用、相关工具等方面进行说明,通过本文的介绍可以减...

m0_37163942的博客 257

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

阿里巴巴Redis使用规范:提升Redis服务稳定性与性能的28条黄金法则

阿里巴巴Redis使用规范:提升Redis服务稳定性与性能的28条黄金法则 【下载地址】阿里巴巴Redis使用规范 阿里巴巴Redis使用规范是阿里巴巴技术团队基于多年实践经验总结的28条最佳实践指南,涵盖连接管理、数据存储、安全防护和性能优化等关键领域。通过遵循这些规范,开发者与运维人员能够显著提升Redis服务的稳定...

gitblog_06702的博客 1109

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

完整阿里云Redis开发规范

完整阿里云Redis开发规范 原文地址 本文主要介绍在使用阿里云Redis的开发规范,从下面几个方面进行说明。 键值设计 命令使用 客户端使用 相关工具 删除bigkey 通过本文的介绍可以减少使用Redis过程带来的问题。 一、键值设计 1、key名设计 可读性和可管理性 以业务名(或数据库名)为前缀(...

weixin_34033624的博客 145

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

阿里云 Redis 开发规范

摘要:本文介绍了在使用阿里云Redis的开发规范,从键值设计、命令使用、客户端使用、相关工具等方面进行说明,通过本文的介绍可以减少使用Redis过程带来的问题。一、键值设计1. key名...

架构师小秘圈 163

阿里官方 Redis 开发规范

本文主要介绍在使用阿里云 Redis 的开发规范,从下面几个方面进行说明。通过本文的介绍可以减少使用 Redis 过程带来的问题。

技术分享博客 219

【亲测免费】 阿里巴巴Redis使用规范

阿里巴巴Redis使用规范 【下载地址】阿里巴巴Redis使用规范 阿里巴巴Redis使用规范是阿里巴巴技术团队基于多年实践经验总结的28条最佳实践指南,涵盖连接管理、数据存储、安全防护和性能优化等关键领域。通过遵循这些规范,开发者与运维人员能够显著提升Redis服务的稳定性与性能,确保系统高效运行。文档内容详实,适用于...

gitblog_06768的博客 349

阿里云 redis 规范

摘要:本文介绍了在使用阿里云Redis的开发规范,从键值设计、命令使用、客户端使用、相关工具等方面进行说明,通过本文的介绍可以减少使用Redis过程带来的问题。 原文:http://click.aliyun.com/m/43801/ 一、键值设计 1. key名设计 (1)【建议】: 可读性和可管理性 以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id (2)【建议】:简洁性 保证语义的前提下,控制key的长度,当key较多时,内存占用也不容忽视,例如: .

迷失的鱼的博客 211

如何做到阿里云 Redis 开发规范中的拒绝 bigkey

代码中的问题,光靠 Code Review 是不够的。Code Review 主要是解决规范问题,当然也能排查出一些 bug。 Code Review 适合技术驱动型团队、公共服务型团队、测试缺失型团队、新人密集型团队、任何有主观意愿的团队。Code Review 活动主要围绕下面 4 项工作开展。 说到代码规范,我们就不得不提阿里云的 Redis 开发规范。这个规范写的很好,想把我说的都...

东境物语 2891
上一篇: nginx+fastdfs 遇到的问题
下一篇: springboot jar部署的日志分割解决
曲终--人散
博客等级 码龄14年 23粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值