redis使用注意事项(Redis使用建议)

200阅读模式

一、 键值设计文章源自懂站帝-http://www.sfdkj.com/12921.html

1. key 名称设计文章源自懂站帝-http://www.sfdkj.com/12921.html

(1) 可读性和可管理性文章源自懂站帝-http://www.sfdkj.com/12921.html

便于查看,统计,排错文章源自懂站帝-http://www.sfdkj.com/12921.html

(2)简洁性,控制key长度文章源自懂站帝-http://www.sfdkj.com/12921.html

在保证语义的前提下,尽量控制key的长度文章源自懂站帝-http://www.sfdkj.com/12921.html

(3)不要包含特殊字符文章源自懂站帝-http://www.sfdkj.com/12921.html

禁止包含特殊字符如空格,换行,单双引号,其他转义字符文章源自懂站帝-http://www.sfdkj.com/12921.html

2. value 设计文章源自懂站帝-http://www.sfdkj.com/12921.html

(1)不宜过大,越小越好文章源自懂站帝-http://www.sfdkj.com/12921.html

string类型控制在1KB以内,hash/list/set/zset等包含元素个数控制在1000以内文章源自懂站帝-http://www.sfdkj.com/12921.html

credis页面,群集所有者可以通过unlink异步清理或小批量迭代清理文章源自懂站帝-http://www.sfdkj.com/12921.html

(2)一定要设置过期时间,当实例写满,根据volatile-lru淘汰老的数据文章源自懂站帝-http://www.sfdkj.com/12921.html

不设置过期时间,redis实例大小会一直无限增长,会出现机器内存耗尽、故障恢复耗时特别长等问题文章源自懂站帝-http://www.sfdkj.com/12921.html

3.实例Key个数限制文章源自懂站帝-http://www.sfdkj.com/12921.html

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

单实例key个数达到134217728已经很大了,实例元素过大对于后续分析rdb遍历大key时会非常耗时。文章源自懂站帝-http://www.sfdkj.com/12921.html

4.设置合理的过期时间。文章源自懂站帝-http://www.sfdkj.com/12921.html

Redis只是缓存,不能当成数据库来用。所有key应该根据业务场景,设置合理过期时间,也可以提升资源利用率。文章源自懂站帝-http://www.sfdkj.com/12921.html

二、 命令使用文章源自懂站帝-http://www.sfdkj.com/12921.html

1. 禁用KEYS 正则匹配,可用SCAN代替文章源自懂站帝-http://www.sfdkj.com/12921.html

容易阻塞正常读写请求,甚至主从切换文章源自懂站帝-http://www.sfdkj.com/12921.html

2. O(N)命令关注N,控制集合元素尽可能小文章源自懂站帝-http://www.sfdkj.com/12921.html

hgetall/lrange/smembers/zrange等在集合包含元素个数较少的情况下使用,文章源自懂站帝-http://www.sfdkj.com/12921.html

若规模较大,有遍历需求,可用HSCAN/SSCAN/ZSCAN渐进式遍历文章源自懂站帝-http://www.sfdkj.com/12921.html

3. 禁用KEYS/FLUSHDB/FLUSHALL等命令文章源自懂站帝-http://www.sfdkj.com/12921.html

防止误操作,造成生产事故文章源自懂站帝-http://www.sfdkj.com/12921.html

4. Redis事务支持较弱,不建议过多使用文章源自懂站帝-http://www.sfdkj.com/12921.html

不支持回滚文章源自懂站帝-http://www.sfdkj.com/12921.html

三、 参数配置文章源自懂站帝-http://www.sfdkj.com/12921.html

1. 服务端配置文章源自懂站帝-http://www.sfdkj.com/12921.html

(1)同一个分片的主从节点,部署在不同机柜的不同宿主机,最大程度保障实例故障时数据不丢失。文章源自懂站帝-http://www.sfdkj.com/12921.html

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

(3)影响下单主流程的核心Redis要有DR(Disaster Recovery https://redis.com/redis-enterprise/technology/backup-disaster-recovery/)文章源自懂站帝-http://www.sfdkj.com/12921.html

(4)Redis 服务器参数配置文章源自懂站帝-http://www.sfdkj.com/12921.html

echo 2048 > /proc/sys/net/core/somaxconn文章源自懂站帝-http://www.sfdkj.com/12921.html

echo never > /sys/kernel/mm/transparent_hugepage/enabled文章源自懂站帝-http://www.sfdkj.com/12921.html

sysctl vm.overcommit_memory=1文章源自懂站帝-http://www.sfdkj.com/12921.html

echo 0 > /proc/sys/vm/swappiness文章源自懂站帝-http://www.sfdkj.com/12921.html

懂站帝
  • 本文由 发表于 2022年5月14日 12:20:41
  • 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至395045033@qq.com举报,一经查实,本站将立刻删除。