目录
1.数据量不能太大(存在内存,所以数据量不能太大)
2.使用越频繁(查询),越适合用Redis保存数据,来减轻数据库的压力
3.保存在Redis中的数据一般不会是数据库中频繁修改的
Redis将数据保存在内存中, 内存的容量是有限的,如果Redis服务器的内存已经满了,还需要向Redis中保存新的数据,就需要缓存的淘汰策略,清除一些数据。
noeviction:返回错误,抛出一个异常(是默认的缓存淘汰策略)
可以设置满足某些条件的信息删除后,再将新的信息保存
allkeys-random:所有数据中随机删除数据
volatile-random: 有过期时间的数据中随机删除数据
volatile-ttl:删除剩余有效时间最少的数据
allkeys-lru:所有数据中删除上次使用时间距离现在最久的数据
volatile-lru:有过期时间的数据中删除上次使用时间距离现在最久的数据
allkeys-lfu:所有数据中删除使用频率最少的
volatile-lfu:有过期时间的数据中删除使用频率最少的
RDB本质上就是数据库快照(就是当前Redis中所有数据转换成二进制的对象,保存在硬盘上)
默认情况下,每次备份会生成一个dump.rdb的文件,当Redis断电或宕机后,重新启动时,会从这个文件中恢复数据,获得dump.rdb中所有内容。
实现这个效果我们可以在Redis的配置文件中添加如下信息
save 60 5
上面配置中:
配置效果:1分钟内如果有5个key以上被修改,就启动rdb数据库快照程序
优点:
因为是整体Redis数据的二进制格式,数据恢复是整体恢复的(最后一次生成的rdb中的数据包括之前的数据没有丢失)
缺点:
生成的rdb文件是一个硬盘上的文件,读写效率是较低的
如果突然断电,只能恢复最后一次生成的rdb中的数据
AOF策略是将Redis运行过的所有命令(日志)备份下来,保存在硬盘上
这样即使Redis断电,我们也可以根据运行过的日志,恢复为断电前的样子
我们可以在Redis的配置文件中添加如下配置信息
appendonly yes
经过这个设置,就能保存运行过的指令的日志了
理论上任何运行过的指令都可以恢复
但是实际情况下,Redis非常繁忙时,我们会将日志命令缓存之后,整体发送给备份,减少io次数以提高备份的性能和对Redis性能的影响
实际开发中,配置一般会采用每秒将日志文件发送一次的策略,断电最多丢失1秒数据
优点:
相对RDB来讲,信息丢失的较少
缺点:
因为保存的是运行的日志,所以占用空间较大
实际开发中RDB和AOF是可以同时开启的,也可以选择性开启
Redis的AOF为减少日志文件的大小,支持AOF rewrite
简单来说就是将日志中无效的语句删除,能够减少占用的空间