Redis学习之开发规范
key名设计
- 可读性和可管理性,以业务名或数据库名为前缀防止key冲突,用冒号分隔。例子业务名:表名:id,比如ugc:video:1
- 简洁性,保证语义的情况下,尽量缩减key的长度
- 不要包含特殊字符,空格,换行,单双引号
value的设计
- string类型控制在10kb,hash,list,set,zset元素个数不要超过5000
big key 的发现:
redis-cli --bigkeys
debug object key
big key 的删除 :
scan 游标遍历删除
命令的优化
客户端的优化
- 避免多个应用使用同一个redis实例
连接池参数优化
maxIdl 接近maxTotal即可
合理计算连接数
内存优化
输出缓冲区的配置
普通客户端缓冲区:
默认 client-output-buffer-limit normal 0 0 0
默认没有限制客户端缓冲
防止大的命令或者monitor
slave客户端缓冲区:
默认 client-output-buffer-limit slave 256mb 64mb 60
阻塞:主从延迟较高,或者从节点过多
pubsub客户端缓冲区:
默认 client-output-buffer-limit slave 32mb 8mb 60
阻塞:生产大于消费
复制缓冲区
AOF缓冲区
内存管理
设置最大内存,超过后由maxmemory-policy控制。
内存回收:惰性删除,定时删除。