Redis使用建议

一、 键值设计

  1. key 名称设计

    (1) 可读性和可管理性

    便于查看,统计,排错
    

    (2)简洁性,控制key长度

    在保证语义的前提下,尽量控制key的长度
    

    (3)不要包含特殊字符

    禁止包含特殊字符如空格,换行,单双引号,其他转义字符
    
  2. value 设计

    (1)不宜过大,越小越好

    string类型控制在1KB以内,hash/list/set/zset等包含元素个数控制在1000以内

    credis页面,群集所有者可以通过unlink异步清理或小批量迭代清理

(2)一定要设置过期时间,当实例写满,根据volatile-lru淘汰老的数据

   不设置过期时间,redis实例大小会一直无限增长,会出现机器内存耗尽、故障恢复耗时特别长等问题

3.实例Key个数限制

由于Redis Rehash机制,实例Key数量达到一定值rehash操作时,需要有一定量空闲内存资源,如key达到134217728,rehash需要有2gb空闲内存资源,达到268435456时,rehash需要有4gb空闲内存资源。如果没有组够的内存资源rehash时会发生Key剔除(数据丢失/程序超时/甚至引起切换)。

单实例key个数达到134217728已经很大了,实例元素过大对于后续分析rdb遍历大key时会非常耗时。

4.设置合理的过期时间。

Redis只是缓存,不能当成数据库来用。所有key应该根据业务场景,设置合理过期时间,也可以提升资源利用率。

二、 命令使用

  1. 禁用KEYS 正则匹配,可用SCAN代替

    容易阻塞正常读写请求,甚至主从切换

  2. O(N)命令关注N,控制集合元素尽可能小

    hgetall/lrange/smembers/zrange等在集合包含元素个数较少的情况下使用,

    若规模较大,有遍历需求,可用HSCAN/SSCAN/ZSCAN渐进式遍历

  3. 禁用KEYS/FLUSHDB/FLUSHALL等命令

    防止误操作,造成生产事故

  4. Redis事务支持较弱,不建议过多使用

    不支持回滚

三、 参数配置

  1. 服务端配置

(1)同一个分片的主从节点,部署在不同机柜的不同宿主机,最大程度保障实例故障时数据不丢失。

(2)单个实例不宜过大,一般在控制8GB以内,生产环境单个实例大小禁止超过30GB。15GB+不自动扩容。TROCKS由于底层存储使用ROCKSDB,以及为了节省成本,实例可以更大一些,根据当时申请规格来。

(3)影响下单主流程的核心Redis要有DR(Disaster Recovery https://redis.com/redis-enterprise/technology/backup-disaster-recovery/)

(4)Redis 服务器参数配置

    echo 2048 > /proc/sys/net/core/somaxconn

    echo never > /sys/kernel/mm/transparent_hugepage/enabled

    sysctl vm.overcommit_memory=1

    echo 0 > /proc/sys/vm/swappiness
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值