持久化操作
Redis比memcache好的地方是自己可以进行持久化操作,随时把内存的redis数据保存在硬盘里边,服务器断电或重新启动后又会把硬盘的数据给恢复到内存里边
(方式1 RDB)snapshotting 快照方式, 机制
默认保存到文件名为dummp.rdb中,二进制文件
把redis在内存的全部数据获得到,以文件形式存储在硬盘里边。有具体触发机制,实现数据的存储
save 900 1 # 900移有1个 key 被改变备份一次
save 300 10 # 300秒有10个 key 被改变备份一次
save 60 1000 # 30秒有1000个 key 被改变备份一次
他们的关系是或
可以手动save, 即可生成 dump.rdb 文件
备份文件和存储路径(redis.conf)
dbfilename dump.rdb
dir ./
(方式2 AOF)append_only_file 增量追加备份方式。记录每一次写操作
缩写aof #通过 write 函数追加到文件中appendonly.aof (可看,存的为操作)
首先通过快照方式做一个大的备份文件,然后把每个命令都通过aof方式把以后执行的每个命令都给保存起来。
这样我们有两个备份文件:大的备份文件 和 具体命令备份文件
数据还原也是先还原大的备份文件,在把命令文件里边的具体指令给执行一遍
优点
- 大的备份文件不可能每天都备份(时间损耗太多)
- 快照方式备份的密度不够,导致会有数据丢失情况发生,aof方式备份的密度高,可以达到每秒就备份一
启用
开启aof方式备份
appendonly yes
保存命令的文件
appendfilename appendonly.aof
机制
appendfsync always #执行的每条指令都备份
appendfsync everysec #每秒备份一次(折中推荐)
appendfsync no #是否备份取决于当前系统空闲情况,完全依赖 os,性能最好,持久化没保证
持久化指令
save #同步保存数据到磁盘
bgsave #异步保存数据到磁盘
lastsave #返回上次成功保存到磁盘的unix时间戳
shutdown #同步保存到服务器并关闭redis服务器
bgrewriteaof #当日志文件过长时重写日志文件
./redis-cli bgrewriteaof #appendonly.aof文件进行优化
./redis-cli -h 127.0.0.1 -p 6379 bgsave #手动发起快照,可以远程操作
虚拟内存
把不经常使用的文件写入文件。 配置
vm-enabled yes #默认no ,开启vm
vm-swap-file /tmp/redis.swap #交换出来的value 保存的文件路径
vm-max-memory 100000 #redis 使用的最大内存上限
vm-page-size 32 #每个页面的大小32 字节
vm-pages 134217728 #最多使用多少页面
vm-max-threads 4 #用于执行value 对象换入的工作线程数量
//修改完重启服务器会提示是否要启用vm 的一条命令,cp到redis.conf 文件中即可