reids是一个基于内存的高性能key-value数据库
特点: 定期通过异步操作把数据库数据刷新到硬盘进行保存,性能超级高
支持保存多种数据结构
主要缺点: 数据库容量受到物理内存的限制,不能海量的高性能读写,
在较小数据量的高性能操作运算
Redis 是单进程单线程的
好处:
1:速度快:
2:支持丰富数据类型:string,list,set,hash
3:支持事务:操作都是原子性,要么全部执行,要么全部不执行
4:丰富的特性:可用于缓存,设置过期,然后删除
----------------------------------------------------------------------------------------------------------------------
redis的持久化策略
AOF + RDB
RDB :什么是RDB
在指定的时间间隔内将内存中的数据集快照写入磁盘, (在指定的时间内将内存中的数据写入磁盘,)
也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里 (恢复时是将dump.rdb文件读取到内存中)
原理:(必须记住)
Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到
一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。
整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能
如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方
式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失。
----------------------------------------------------------------------------------------------------------------------
RDB:
Redis会重新fork出一条子进程,这条子进程和主进程一模一样,
因为cpu里面读和写的操作很慢,所以说fork出一条子进程,让它来进行读和写操作,
当持久化操作完成之后,它就会将fork出来的子进程中的文件去替换原来进程中的那个配置文件,
整个过程中,主进程不进行任何IO操作,这就确保了极高的性能,RDB适合进行大规模数据的恢复,
因为它有一个缺点,就是最后一次持久化后的数据可能会丢失
RDB的持久化策略分为主动和被动,主动是Save和BGsave,save是全阻塞,BGsave是异步操作,
被动策略有3种,默认情况为900s触发1次,300s触发10次,60s触发1万次
----------------------------------------------------------------------------------------------------------------------
fork:
主动
Save:save时只管保存,其它不管,全部阻塞
BGSAVE:Redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。可以通过lastsave 命令获取最后一次成功执行快照的时间
flush操作
shutdown 操作
被动
save ""
可选
stop-writes-on-bgsave-error :如果配置成no,表示你不在乎数据不一致或者有其他的手段发现和控制
rdbcompression 对于存储到磁盘中的快照,可以设置是否进行压缩存储。如果是的话,redis会采用
LZF算法进行压缩。如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能
rdbchecksum: 在存储快照后,还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约
10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能
dbfilename:dump.rdb