Redis 使用规范学习笔记

254 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第7天,点击查看活动详情

为了更好的使用 Redis,学习一下其使用规范

键值对使用规范

1、key 的命名规范

使用业务名作为前缀,然后使用冒号分隔,再加上具体的业务数据名。

注意控制 key 的长度,如果 key 较长的话,会消耗较多内存空间。

举例:

uv:page:1024

uv 代表业务 unique visitor(独立访客量)

page 代表数据名称,网页

1024 代表具体的网页编号

2、避免使用 bigkey

原因:Redis 使用单线程读写数据,bigkey 读写操作会阻塞线程,降低 Redis 的性能。

bigkey 情况一:键值对的值是 String 类型,本身比较大,例如 value 值为 1MB 的 String 数据类型。

建议:String 类型数据大小控制在 10 KB 以下。

bigkey 情况二:键值对的值是集合类型,集合元素个数非常多,例如包含 100 万个元素的 Hash 集合类型。

建议:集合类型数据,元素个数控制在 1 万以下。

3、使用高效序列化方法和压缩方法
4、使用整数对象共享池

Redis 内部维护了 0~9999 这一万个整数对象,并把这些整数作为一个共享池使用。

如果有一个键值对中使用了 0~9999 之间的一个整数,Redis 就不会为这个键值对专门创建整数对象了,而是会复用共享池中的整数对象。

注意有两种情况不能使用整数对象共享池。

第一种情况是,Redis 设置了 maxmemory,并且启用了 LRU 策略。

第二种情况是,集合类型数据采用 ziplist 编码。

数据保存规范

1、使用 Redis 保存热数据
2、不同业务数据分实例存储
3、保存数据时要设置过期时间
4、控制 Redis 实例的容量

建议 2~6 GB

命令使用规范

1、线上禁用部分命令

keys、flushall、flushdb

禁用方法,通过 rename-command 命令,对上面三个命令进行重命名,让客户端无法使用这些命令。

2、慎用 monitor 命令
3、慎用全量操作命令

hgetall、smembers

替代方法:使用 sscan、hscan 命令,分批返回集合中数据

参考文档:

《Redis 核心技术与实战》