(2)惰性清理 。键过期了就过期了 , 不管 。当读/写一个已经过期的key时 , 会触发惰性删除策略 , 直接删除掉这个过期key
(3)定期清理 。每隔一段时间 , 对expires字典进行检查 , 删除里面的过期键 。
4. 缓存容量
缓存的容量有限 , 则容易引起Redis自身的缓存被淘汰淘汰策略 。
5. 缓存故障
缓存节点故障 , 也会引起缓存失效 , 所以业内比较典型的做法就是通过一致性Hash算法来均衡分布缓存 , 或者通过集群采用节点冗余的方式 。
6、监控Redis缓存操作命令
首先可通过info命令来分析缓存的率是否满足业务 , 如果太低那么就可以采用monitor命令或者第三方工具(如:redis-faina)分析操作key的访问频率 , 进而动态更改业务场景需要访问key的类型 。
三、优化服务器内存内存可以说是服务器最宝贵的资源运行地 , 所以对于Redis使用过程中 , 应该来优化Redis的内存 , 从而使其发挥出更大的性能 。
那这个Redis的内存应该如何优化呢? 首先存储任何的缓存都是基于Redis的数据类型进行选择 , 但Redis设置key的时候选择对应的类型就显得的很重要 。设置key和value的时候也不要过长等
就应该从Redis缓存的组成结构 , 淘汰缓存上做到避免无用数据占用缓存、内存碎片、数据类型使用内存上等问题来做分析
如下一些常用的思路
Redis主进程的内存消耗:
- Redis自身使用的内存:消耗很少 , 3MB多点
- 对象内存
- 缓冲内存
- 内存碎片
- 每次创建键值对时 , 至少创建两个类型对象:key对象、value对象 , 应该使用短键名
- 每个客户端的输入、输出缓冲内存:
- 输入缓冲最大1G , 超出则关闭该客户端连接;
- 输出缓冲:16KB的固定缓冲区、动态缓冲区 , 动态缓冲区可通过client-output-buffer-limit配置参数限制(根据客户端类型normal、slave、pubsub , 分开设置)
- client-output-buffer-limit normal 0 0 0
- client-output-buffer-limit slave 256mb 64mb 60 //超过256MB时 , 或者持续超过64MB达60秒 , 关闭连接
- client-output-buffer-limit pubsub 32mb 8mb 60
- 复制积压缓冲内存:用于主从复制的部分复制 , 所有客户端共享该缓冲区 , 默认1MB , 可通过repl-backlog-size调整 , 适当调大 , 可有效避免全量复制;
- AOF缓冲内存:用于保存在AOF重写期间的写命令 , 便于重写完毕后把缓冲的命令追加到AOF文件中;
- 当存储的数据长短差异较大时 , 就容易出现大量内存碎片 , 应该尽可能地保持数据对齐或使用固定长度的字符串;
- 内存碎片只能通过完全重启Redis来清除;
- 为键设置过期属性 , Redis采用惰性删除和定时任务删除机制实现过期键的内存回收;
- 惰性删除:在读取键时才检查是否过期
- 定时任务删除:通过hz配置参数设置频率 , 默认每秒10次;
- 内存溢出控制策略:共6中策略 , 通过maxmemory-policy配置参数控制 , 默认noeviction(不删除 , 拒绝写入 , 返回错误)
- LRU算法表示最近最少使用的 , LFU算法表示最不常用的:
- #volatile-lru - >在设置了过期的key中 , 删除最近最少使用的key , 直到空间足够为止
- #allkeys-lru - >从所有key里删除最近最少使用的key , 不管有没设置过期 , 直到空间足够为止
- #volatile-lfu - >在设置了过期的key中 , 删除最少使用的key , 直到空间足够为止
- #allkeys-lfu - >从所有key里删除最少使用的key , 不管有没设置过期 , 直到空间足够为止
- #volatile-random - >删除一个过期集合中的随机key 。
- #allkeys-random - >删除一个随机key , 不管有没设置过期 。
- #volatile-ttl - >删除即将过期的key(次TTL)
- #noviction - >不删除 , 拒绝写入 , 写入操作时返回错误 。
- maxmemory-samples 5 是说每次进行淘汰的时候 , 会随机抽取5个key 从里面淘汰最少使用的(默认选项)
推荐阅读
- Redis布隆过滤器
- 压缩文件是什么原理?
- 淘宝怎么进分享小站 淘宝分享小站如何开通
- 详解双电源自动切换开关工作原理
- 钓鱼大对决|晚春夜钓正当时!钓鱼老手分享4条爆护秘诀,狂拉大货不含糊!
- 制冷电风扇工作原理
- 行程开关原理及应用
- 漏电保护开关的原理及类型
- 触摸开关原理及特点
- VLAN工作原理之TRUNK:Native Vlan收到不带VLAN的Frame如何处理
