redis开发规范阿里云
一、键值设计
1、key名设计
1) 可读性和可管理性: 以业务名或数据库名为前缀,以防key冲突,用冒号分隔,比如业务名:表名:ID
2)简洁性: 保证语义的前提下,控制key的长度,当key较多时,内存占用也不容忽视。
3)不包含特殊字符: 包含空格、换行、单双引号以及其他转义字符
2、value设计
1) 拒绝bigkey,防止网卡流量、慢查询。 string类型控制在10KB以内,hash、set、zset元素不要超过5000。
非字符串的bigkey,不要使用del删除,使用hscan、sscan、zscan方式渐进式删除,同时注意防止bigkey过期
时间自动删除问题、例如一个200万的zset设置一小时过期,会触发del操作,造成阻塞,而且该操作不会不出现
慢查询中,查找方法和删除方法
2) 选择适合的数据类型。
3) 控制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、使用批量操作提高效率, 注意一次批量操作的元素个数
5、不建议过多使用Redis事务功能,因为其功能较弱,不支持回滚,而且集群版本要求一次事务操作的key必须在一个slot上
可以使用hashtag功能解决
6、Redis集群版本在使用lua上右特殊要求:
1) 所有key都应该由keys数组来传递,redis.call/pcall里面调用Redis命令,key的位置,必须是keys array,否则直接返回error
2) 所有key,必须在一个slot上,否则直接返回error
7、必要情况下使用monitor命令时,要注意不要长时间使用
三、客户端使用
1、避免多个应用使用一个Redis实例, 不相干的业务拆分,公共数据做服务化
2、使用带连接池的数据库,可以有效控制连接,同时提高效率
3、在高并发下建议客户端添加熔断功能
4、设置合理的密码,如有必要可以使用SSL加密访问
5、根据自身业务列席,选好maxmemory-policy(最大内存淘汰策略),设置好过期时间。 默认策略是volatile-lru,即超过最大内存
后,在过期键中使用LRU算法进行key的剔除,保证不过期数据不被删除,但是可能出现OOM问题。
其他策略如下:
1) allkeys-lru 根据LRU算法删除键,不管数据有没有设置超时属性,直到腾出足够空间为止
2)allkeys-random: 随机删除所有键,直到腾出足够空间为止
3)volatile-random: 随机删除过期键,直到腾出足够空间为止
4) volatile-ttl: 根据键值对象的ttl属性,删除最近将要过期数据,如果没有,回退到noeviction策略
5) noevition: 不会剔除任何数据,拒绝所有写入操作并返回客户端错误信息,此时,Redis只响应读操作
redis开发规范阿里云的更多相关文章
- 阿里云 Redis 开发规范
阿里云Redis开发规范-阿里云开发者社区 https://developer.aliyun.com/article/531067 https://mp.weixin.qq.com/s/UWE1Kx6 ...
- 完整阿里云Redis开发规范
完整阿里云Redis开发规范 原文地址 本文主要介绍在使用阿里云Redis的开发规范,从下面几个方面进行说明. 键值设计 命令使用 客户端使用 相关工具 删除bigkey 通过本文的介绍可以减少使用R ...
- 一份完整的阿里云 Redis 开发规范,值得收藏!
来源:yq.aliyun.com/articles/531067 作者:付磊-起扬 本文主要介绍在使用阿里云Redis的开发规范,从下面几个方面进行说明. 键值设计 命令使用 客户端使用 相关工具 通 ...
- 阿里云Redis开发规范
转自: https://yq.aliyun.com/articles/531067 摘要: 本文介绍了在使用阿里云Redis的开发规范,从键值设计.命令使用.客户端使用.相关工具等方面进行说明,通过本 ...
- Redis系列(十一)--阿里云开发规范
本文主要介绍阿里云Redis的开发规范,主要从以下几个方面说明: 1.键值设计 2.命令使用 3.客户端使用 4.相关工具 一.键值设计 1.key name设计 1).[建议]:可读性和可管理性 以 ...
- 阿里云Redis开发规范[转]
一.键值设计 1. key名设计 (1)[建议]: 可读性和可管理性 以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id ugc:video:1 (2)[建议]:简洁性 ...
- 阿里云Redis开发规范(转)
一.键值设计 1. key名设计 (1)[建议]: 可读性和可管理性 以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id ugc:video: (2)[建议]:简洁性 ...
- Redis 开发规范
本文主要介绍在使用阿里云Redis的开发规范,从下面几个方面进行说明. 键值设计 命令使用 客户端使用 相关工具 通过本文的介绍可以减少使用Redis过程带来的问题. 一.键值设计 1.key名设计 ...
- 2020阿里巴巴官方最新Redis开发规范!
本文主要介绍在使用阿里云Redis的开发规范,从下面几个方面进行说明. 键值设计 命令使用 客户端使用 相关工具 通过本文的介绍可以减少使用Redis过程带来的问题. 一.键值设计 1.key名设计 ...
随机推荐
- simulate 中的一些操作
1. neutralize: position based 的alpha int neutralize(int di, int ti) { ; ; ; ; ii < nsyms; ++ii) { ...
- UI定位元素大全(跟App定位元素差不多哦)
selenium+python自动化之元素定位 作者:一飞冲天 同样的道理,把一个页面上的元素当成是一个对象(你的女神),我们就可以通过她的属性值来找到她,比如她性别女爱好爬山---------你就可 ...
- [CSP-S模拟测试]:石头剪刀布(rps)(概率DP)
题目传送门(内部题9) 输入格式 第一行一个整数$n$.接下来$n$行每行$3$个非负整数$r_i,p_i,s_i$. 输出格式 一行一个实数表示答案.当你的答案与标准答案的绝对或相对误差不超过${1 ...
- Fiddler正则匹配调试接口示例
Fiddler基础知识 Fiddler是强大的抓包工具,它的原理是以web代理服务器的形式进行工作的,使用的代理地址是:127.0.0.1,端口默认为8888,我们也可以通过设置进行修改. 代理就是在 ...
- JAVA数组的toString()方法不能直接输出数组内容?
问题描述:我定义了一个类,类名是Job,当我输出Job.toString()是可以按我重载的toString方法输出的,但是如果输出jobs[]这个数组时,只会输出[Lmodel.Job;@45e22 ...
- 【CDN+】 Hbase入门 以及Hbase shell基础命令
前言 大数据的基础离不开Hbase, 本文就hbase的基础概念,特点,以及框架进行简介, 实际操作种需要注意hbase shell的使用. Hbase 基础 官网:https://hbase.ap ...
- python中w和wb文件写入的区别!
一:基本区别: w:是文本写入 wb:字节写入 windows中换行符是 \r\n w写入文件的时候,遇到 \n 自动替换成 \r\n
- Vue过渡:JavaScript钩子
一 App.vue <template> <div id="app"> <button @click="show = !show" ...
- 编程语言 - PHP
环境搭建 Window7+Apache24+PHP7. Apache24配置 LoadModule php7_module "D:/SoftWare/php-7.2.21-Win32-VC1 ...
- Windows系统命令整理-Win10
硬件相关 显卡 显卡升级 - 我的电脑->属性->设备管理器->显示适配器->更新驱动程序 服务 telnet 安装:启用或关闭Windows 功能,勾选上“Telnet客户端 ...