关于运维:Redis属性说明持久化策略内存策略

0次阅读

共计 1993 个字符,预计需要花费 5 分钟才能阅读完成。

Redis 长久化策略

为什么要长久化:

Redis 中的记录都保留在内存中,如果内存断电或者服务器宕机,则内存数据间接失落。业务中不容许产生,所以须要将数据定期进行保护.

长久化模式:

1.RDB 模式:

形容:RDB 模式是 Redis 的默认的长久化策略. 无需手动的开启.
特点:
(1)Redis 会定期的执行 RDB 长久化操作. 毛病是可能会导致内存数据失落.
(2)RDB 记录的是内存数据的快照. 并且后续的快照会笼罩之前的快照. 每次只保留最新数据. 效率更高.

命令有:
1)save 命令要求立刻执行长久化操作 save 会造成线程的阻塞.
2)bgsave 命令后盾长久化操作 后盾运行不会造成阻塞. 异步操作,不能保障立刻执行.

2.AOF 模式:

形容:AOF 模式默认条件下是敞开,须要手动的开启,如果开启了 AOF 模式则 RDB 模式将生效. 然而如果手动执行 save 命令,则也会生成 RDB 文件.
1)开启 AOF 模式

2)特点:
a.AOF 模式记录程序的执行的过程,所以能够保证数据不失落.
b. 因为 AOF 记录程序运行的过程,所以整个长久化文件绝对大,所以须要定期维护,效率低.

3.RDB 与 AOF 模式长久化比照

1)RDB 模式
save 900 1 如果在 900 秒内,执行了一次更新操作则长久化一次
save 300 10
save 60 10000 操作越快,长久化的周期越短.

2)AOF 模式
appendfsync always 用户执行一次更新操作,则长久化一次异步操作.
appendfsync everysec 每秒操作一次
appendfsync no 不被动操作个别不必

对于 RDB 与 AOF 总结

策略:如果数据容许大量失落,首选 RDB 模式,如果数据不容许失落则首选 AOF 模式.

实战策略:又要满足效率,同时满足数据不失落.
主机:采纳 RDB 模式
从机:采纳 AOF 模式

教训题:

Redis 内存策略

1.LRU 算法

即最近起码应用 ,是一种罕用的页面置换算法,抉择最近最久未应用的页面予以淘汰。该算法赋予每个页面一个拜访字段,用来记录一个页面自上次被拜访以来所经验的工夫 t,当须淘汰一个页面时,抉择现有页面中其 t 值最大的,即最近起码应用的页面予以淘汰。
判断维度: 工夫 T

2.LFU 算法

即最不常常应用页置换算法 ,要求在页置换时置换援用计数最小的页,因为常常应用的页应该有一个较大的援用次数。然而有些页在开始时应用次数很多,但当前就不再应用,这类页将会长工夫留在内存中,因而能够将援用计数寄存器定时 右移一位 ,造成指数衰减的均匀应用次数。
判断维度: 应用次数

3. 随机算法

随机算法(不罕用).

TTL 算法

将剩余时间短的数据,提前删除.

Redis 的内存优化策略

redis.conf 配置文件中批改设置:
1.volatile-lru 在设定超时工夫的数据中采纳 LRU 算法.
2.allkeys-lru 所有的数据采纳 LRU 算法删除.
3.volatile-lfu 设定了超时工夫的数据采纳 LFU 算法删除.
4.allkeys-lfu 所有数据采纳 LFU 算法删除.
5.volatile-random 设定了超时工夫的数据采纳随机算法.
6.allkeys-random 所有数据的随机算法.
7.volatile-ttl 设定了超时工夫之后采纳 TTL 算法.
8.noeviction 不做任何操作,只是返回报错信息.

Redis 常见问题:

产生起因:高并发环境下,用户长时间对服务器进行操作,可能产生如下的问题:

什么是缓存穿透?

形容:用户高并发环境下拜访 数据库 缓存 都不存在的数据 称为缓存穿透景象.

解决方案:
1)禁用 IP 限度 IP 拜访.
2)限流 每秒最多拜访 3 次
3)布隆过滤器
布隆过滤器:
布隆过滤器(Bloom Filter)是 1970 年由布隆提出的。它实际上是一个 很长的二进制向量和一系列随机映射函数 。布隆过滤器能够 用于检索一个元素是否在一个汇合中。它的长处是空间效率和查问工夫都比个别的算法要好的多,毛病是有肯定的误识别率和删除艰难。

布隆过滤器优化:
问题是:如何解决 hash 碰撞问题.
知识点:因为 hash 碰撞问题,可能由多个 key 有雷同的地位,所以得出结论,布隆过滤器认为数据存在,那么数据可能存在. 如果布隆过滤器认为数据不存在,则数据肯定不存在.

如何升高 hash 碰撞的几率:
1)扩容二进制向量位数.
2)减少 hash 函数的个数.
当位数减少 / 函数适当减少,则能够无效的升高 hash 碰撞的几率. 默认值 0.03.

什么是缓存击穿?

形容:某个热点数据在缓存中忽然生效. 导致大量的用户间接拜访数据库. 导致并发压力过高造成异样.

解决方案:
1)尽可能将热点数据的超时工夫,设定的长一点.
2)设定多级缓存,超时工夫采纳随机算法.

什么是缓存雪崩?

形容:在缓存服务器中,因为大量的缓存数据生效,导致用户拜访的命中率过低. 导致间接拜访数据库.
问题剖析:
1)fluashAll 命令可能导致缓存雪崩.
2)设定超时工夫时,应该采纳随机算法.
3)采纳多级缓存能够无效避免.

正文完
 0