5. Redis-事务与持久化
5.1 Redis 的事务
redis 的事务非常简单:
1. multi 打开事务
2. 设置值
3. exec 执行,提交事务,discard 取消事务或者回滚
但是redis不能保证同时成功或者失败是提交回滚,所以redis的事务还是比较简单的。
5.2 Redis持久化
redis 是一个支持持久化的内存数据库,也就是说 redis 需要经常将内存中的数据同步到硬盘来保证持久化。
redis持久化有两种方式:
snapshotting(快照)默认方式:将内存中以快照的方式写入到二进制文件中,默认为dump.db。可以通过配置设置自动做快照持久化的方式。可以配置 redis 在 n 秒内如果超过 m 个 key 则修改就自动做快照。
900秒内有1个key被修改,则发起快照。
300秒内有10个key被修改,则发起快照。
append-only file(缩写 aof)的方式:由于快照方式是在一定时间间隔做一次,所以可能发生 redis 意外 down 机的情况就会丢失最后一次快照后的所有数据、aof 比快照方式有更好的持久化性,是由于在使用 aof 时,redis 会将每一个收到的写命令通过 write 函数追加到命令中,当 redis 重新启动 appendonly.aof。aof不是立即写到硬盘上,可以通过配置文件修改强制到硬盘中。
appendfsync always 只要收到写命令就马上追加到文件中
appendfsync everysec 每分钟追加一次
appendfsync no 依赖于操作系统,由系统决定持久化的时间