Redis属性说明、持久化策略、内存策略

CodeTrailblazerX
• 阅读 801

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模式
Redis属性说明、持久化策略、内存策略
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属性说明、持久化策略、内存策略

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属性说明、持久化策略、内存策略

Redis常见问题:

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

什么是缓存穿透?

描述:用户高并发环境下访问数据库缓存都不存在的数据称为缓存穿透现象.
Redis属性说明、持久化策略、内存策略

解决方案:
1)禁用IP限制IP访问.
2)限流 每秒最多访问3次
3)布隆过滤器
布隆过滤器:
布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。
Redis属性说明、持久化策略、内存策略

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

如何降低hash碰撞的几率:
1)扩容二进制向量位数.
2)增加hash函数的个数.
当位数增加/函数适当增加,则可以有效的降低hash碰撞的几率.默认值0.03.
Redis属性说明、持久化策略、内存策略

什么是缓存击穿?

描述:某个热点数据在缓存中突然失效.导致大量的用户直接访问数据库.导致并发压力过高造成异常.
Redis属性说明、持久化策略、内存策略
解决方案:
1)尽可能将热点数据的超时时间,设定的长一点.
2)设定多级缓存,超时时间采用随机算法.
Redis属性说明、持久化策略、内存策略

什么是缓存雪崩?

描述:在缓存服务器中,由于大量的缓存数据失效,导致用户访问的命中率过低.导致直接访问数据库.
问题分析:
1)fluashAll命令可能导致缓存雪崩.
2)设定超时时间时,应该采用随机算法.
3)采用多级缓存可以有效防止.
Redis属性说明、持久化策略、内存策略

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Redis持久化RDB和AOF实现原理
Redis持久化RDB和AOF为什么Redis需要持久化?因为Redis属于内存型数据库,数据是储存在内存当中的,当遇到不可抗力因素,比如断电,那么储存在内存中的数据就会丢失。所以为了保证数据的完整性,我们需要做持久化操作,来保证数据的完整性。Redis中都有哪些持久化机制?Redis早
可莉 可莉
3年前
051. Redis 持久化机制
1\.持久化介绍Redis的数据存在在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。!image20200511165351687(https://oscimg.oschina.net/os
Stella981 Stella981
3年前
Redis 的落地策略
因为之前使用redis一般都只做热数据处理,没有考虑过落地方案,因此,通过很多次不同的交流,发现落地也挺重要的,特来学习一般。落地策略我们知道,redis是纯内存数据库,一旦发生宕机,数据就会丢失,因此,Redis的落地策略其实就是持久化(Persistence),主要有以下2种策略:1.RDB:定时快照方式(snapsho
Stella981 Stella981
3年前
051. Redis 持久化机制
1\.持久化介绍Redis的数据存在在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。!image20200511165351687(https://oscimg.oschina.net/os
Stella981 Stella981
3年前
Redis持久化的几种方式——深入解析RDB
Redis 的读写都是在内存中,所以它的性能较高,但在内存中的数据会随着服务器的重启而丢失,为了保证数据不丢失,我们需要将内存中的数据存储到磁盘,以便Redis重启时能够从磁盘中恢复原有的数据,而整个过程就叫做Redis持久化。!image.png(https://oscimg.oschina.net/oscnet/232e657dae2
Stella981 Stella981
3年前
Redis——持久化数据
Redis被称为是内存数据库,那是因为它会将其所有数据存储在内存里,因此Redis具有强劲的速度性能,但是,也正因为数据存储在内存中,当Redis重启后,所有存储在内存的数据就会丢失。为了使得数据持久化,Redis提供了两种方式:RDB方式和AOF方式。一、RDB方式RDB方式的持久化是通过快照(snapshotting)完成的,
Stella981 Stella981
3年前
Redis—持久化
一、持久化简介Redis的数据全部存储在内存中,如果突然宕机,数据就会全部丢失,因此必须有一套机制来保证Redis的数据不会因为故障而丢失,这种机制就是Redis的持久化机制,它会将内存中的数据库状态保存到磁盘中。持久化发生了什么|从内存到磁盘
Stella981 Stella981
3年前
Redis 持久化(10)
持久化机制Redis速度快,很大一部分原因是因为它所有的数据都存储在内存中。如果断电或者宕机,都会导致内存中的数据丢失。为了实现重启后数据不丢失,Redis提供了两种持久化的方案,一种是RDB快照(RedisDataBase),一种是AOF(AppendOnlyFile)。RDBRDB是Redis默认的持久化方案。当满足一定条
Stella981 Stella981
3年前
Redis持久化存储详解(一)
为什么要做持久化存储?持久化存储是将Redis存储在内存中的数据存储在硬盘中,实现数据的永久保存。我们都知道Redis是一个基于内存的nosql数据库,内存存储很容易造成数据的丢失,因为当服务器关机等一些异常情况都会导致存储在内存中的数据丢失。持久化存储分类在Redis中,持久化存储分为两种。一种是aof日志追加的方式
Stella981 Stella981
3年前
Redis几个问题总结
redis持久化策略redis是一个内存数据库,但是它提供了持久化机制。即把数据永久的存储在磁盘上。我们来看看这个redis保存数据的流程(1)客户端向服务端发送写操作(数据在客户端的内存中)。(2)数据库服务端接收到写请求的数据(数据在服务端的内存中)。(3)服务端调用write这个系统调用,将数据往磁盘上写(数据在系
子非鱼 子非鱼
3年前
Redis高级
第一章Redis的持久化由于redis是一个内存数据库,所有的数据都是保存在内存当中的,内存当中的数据极易丢失,所以redis的数据持久化就显得尤为重要,在redis当中,提供了两种数据持久化的方式,分别为RDB以及AOF,且Redis默认开启的数据持久化方式为RDB方式。1、RDB持久化方案Redis会定期保存数据快照至一个rbd文件中,并在启动时自动