命令记不住

登陆

Redis 存储方式

Redis存储方式

1.redis的运行方式说明

redis如果提供缓存的服务,可以关闭所有存储,这样子如果redis重启后所有数据会丢失。
开启rdb或者aof存储,能把redis中的数据持久化到磁盘中。
rdb和aof对性能都有影响,所以建议持久化的操作在从库上执行。

2.redis rdb存储方式,使用save配置开启rdb存储或者关闭rdb存储

dir /data/redis/    #dir为rdb存储的路径
dbfilename dump.rdb  #rdb存储文件的名字
save 60 10000   #60s更改10000个key,则触发rdb存储
save 300 10    #300s更改了10个key则触发存储
save 900 1    #900s更新了1个key则触发存储
rdbcompression no   #rdb压缩最好关闭,影响cpu

3.设置开启或者关闭rdb

config set save '' #关闭rdb存储
config rewrite
config set save "180 1 120 10 60 10000" #开启rdb存储
config rewrite

4.写入数据,观察rdb存储

for line in `seq -w 100`;do
  redis-cli set key_${line} value_${line}
done

5.redis提供的bgsave命令能够触发rdb存储,观察存储日志

bgsave #会启动一个新进程存储
save  #阻塞存储
AOF存储方式

1: redis的appendonly存储配置

appendonly会把用户的每次写操作都记录到文件中

2: 动态开启或者关闭aof

config set appendonly yes #开启
config rewrite
config set appendonly no  #关闭
config rewrite

3: 写入数据,观察aof。多次运行,aof文件不断增大,rdb文件大小不变

for line in `seq -w 100`;do
  redis-cli set key_${line} value_${line}
done

4: 重写aof文件,整理相同的key,写入最后有效的值

BGREWRITEAOF

5: aof配置自动rewrite

auto-aof-rewrite-percentage #默认为100%,也就是增加一倍后考虑aof rewrite
auto-aof-rewrite-min-size  #默认为64mb,也就是达到64M后再rewrite。跟上一个条件要同时满

推荐阅读