redis开发使用规范
redis开发使用规范
1、冷热数据分离,不要将所有数据全部都放在Redis中
根据业务只将高频热数据存储到Redis中【QPS大于5000】,对于低频冷数据可以使用mysql等基于磁盘的存储方式。
不仅节省内存成本,而且数据量小操作时速度更快,效率更高。
2、不同的业务数据要分开存储
不要将不相关的业务数据都放到一个Redis实例中,建议新业务申请新的单独实例。因为Redis为单线程处理,
独立存储会减少不同业务相互操作的影响,提高请求响应速度;同时也避免单个实例内存数据量膨胀过大,
在出现异常情况时可以更快恢复服务!简言之,不同业务数据要分开存储,尽可能的独立使用,
而不是多个业务共享同一redis实例。
3、规范Key的格式
合适的Key,便于查看,统计,排错。
不推荐含义不清的Key和特别长的Key。例如:"平台缩写"+":"+"项目名"+":"+"业务含义"。
例如:CRM:STUDENTS:USERINFO
":" 作为key分隔符,方便客户端工具作为目录分级
保证语义的前提下,控制 key 的长度,当 key 较多时,内存占用也不容忽视。
不要包含特殊字符。例如:包含空格、换行、单双引号以及其他转义字符
另外可参考一下几点说明:
有一套能区分业务归属的命名规范,key前缀是发生内存暴涨,性能问题时的分析定位问题的可行基础,Key的命名规范建议:
第1个字符小写定义数据类型:
string —>s,Hash—>h,Set—>s,Zset —>z,List —>l,Geo—>g
第2,3字符定义公开的业务分类:
第4-10个字符定义部门类的业务线细分
推荐的key中可使用符号.:#
不推荐使用的有:\ ? * {} [] ()
例:hCMappnode.product.detail:1312342
4、value设计时,拒绝 bigkey。
string 类型控制在 10KB 以内,hash、list、set、zset 元素个数不要超过 5000
5、对于必须要存储的大文本数据一定要压缩后存储
6、线上Redis禁止使用Keys正则匹配操作
7、所有的key设置过期时间(比如可设置过期时间10天,特殊要求除外)
8、list的长度最大长度不超过1万,size不超过1G
9、string类型value长度不超过10M
10、不使用多个db,只使用db0,如果要区分业务线,在配置文件里定义各业务线使用的前缀
redis开发使用规范的更多相关文章
- 完整阿里云Redis开发规范
完整阿里云Redis开发规范 原文地址 本文主要介绍在使用阿里云Redis的开发规范,从下面几个方面进行说明. 键值设计 命令使用 客户端使用 相关工具 删除bigkey 通过本文的介绍可以减少使用R ...
- 阿里云 Redis 开发规范
阿里云Redis开发规范-阿里云开发者社区 https://developer.aliyun.com/article/531067 https://mp.weixin.qq.com/s/UWE1Kx6 ...
- ASP.NET Redis 开发
文件并发(日志处理)--队列--Redis+Log4Net Redis简介 Redis是一个开源的,使用C语言编写,面向“键/值”对类型数据的分布式NoSQL数据库系统,特点是高性能,持久存储,适应高 ...
- ASP.NET c# Redis 开发
Redis简介 Redis是一个开源的,使用C语言编写,面向“键/值”对类型数据的分布式NoSQL数据库系统,特点是高性能,持久存储,适应高并发的应用场景.Redis纯粹为应用而产生,它是一个高性能的 ...
- Android开发代码规范(转)
Android开发代码规范 1.命名基本原则 在面向对象编程中,对于类,对象,方法,变量等方面的命名是非常有技巧的.比如,大小写的区分,使用不同字母开头等等.但究其本,追其源,在为一个资源其名称 ...
- java开发命名规范(转载)
java开发命名规范 使用前注意事项: 1. 由于Java面向对象编程的特性, 在命名时应尽量选择名词 2. 驼峰命名法(Camel-Case): 当变量名或函式名是由一个或多个单字连结在一起,而 ...
- Android开发编码规范(自用)
转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! Android开发编码规范 目的及指导原则 目的 统一规范 Eclipse编辑环境 ...
- ym——Android开发编码规范(自用)
转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! Android开发编码规范 目的及指导原则 目的 统一规范 Eclipse编辑环境下J ...
- 你不可不看的Android开发命名规范
标识符命名法最要有四种: Camel(骆驼)命名法:除首单词外,其余所有单词的第一个字母大写,如:fooBar; Pascal命名法:所有单词的第一个字母大写,如:FooBar: 下划线命名法:单词与 ...
随机推荐
- linux创建软链接
linux软链接linux下的软链接类似于windows下的快捷方式实例:ln -s /home/gamestat /gamestatln -s a b 中的 a 就是源文件,b是链接文件名,其 ...
- linux常用命令(22)gzip命令
减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间.gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用.gzip不仅可以用 ...
- centos7.5 升级kernel内核版本
一,查看当前系统内核版本信息 awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg 或 ...
- Ubuntu系统挂载磁盘硬盘
在电脑(Ubuntu16.04)新装了一个硬盘,然后只有挂载了我们才能正常使用,下面总结一下挂载的过程. 首先,打开命令行输入命令: sudo fdisk -l 可以看到:磁盘格式化后 硬盘格式化 命 ...
- 7大python 深度学习框架的描述及优缺点绍
Theano https://github.com/Theano/Theano 描述: Theano 是一个python库, 允许你定义, 优化并且有效地评估涉及到多维数组的数学表达式. 它与GPUs ...
- 【洛谷p1781】宇宙总统
宇宙总统[题目链接] 关于题目算法,其实就是考排序,那我们直接sort不就好啦,显然不能. 这个题让我重新认识了cmp函数: 以下是我的心路历程: 看到这个题,嗯?这么简单的吗,我直接sort不就好啦 ...
- 洛谷 P1072 Hankson 的趣味题 题解
题面 提前知识:gcd(a/d,b/d)*d=gcd(a,b); lcm(a,b)=a*b/gcd(a,b); 那么可以比较轻松的算出:gcd(x/a1,a0/a1)==gcd(b1/b0,b1/x) ...
- 关于setter 和 getter方法的一些总结(初级)
1.最基础的set 和 get 准备工作 Person.h @interface Person : NSObject { NSString *_hobby; // ObjC建议成员变量带"_ ...
- scrapy之盗墓笔记三级页面爬取
#今日目标 **scrapy之盗墓笔记三级页面爬取** 今天要爬取的是盗墓笔记小说,由分析该小说的主要内容在三级页面里,故需要我们 一一解析 *代码实现* daomu.py ``` import sc ...
- 洛谷 - P3469 - BLO-Blockade - 割点
https://www.luogu.org/problem/P3469 翻译:一个原本连通的无向图,可以删除图中的一个点,求因为删除这个点所导致的不连通的有序点对的数量.或者说,删去这个点之后,各个连 ...