1. redis事务
1.1. redis数据库相关特性
redis数据库:redis总共有16个数据库,编号分别为0-15,可以选择数据库:select 0,第一个数据库。
移动key:move keyName 2,将keyName移动到第三个数据库。
查看类型:type keyName
删除当前库的所有key:flushdb
删除所有库的key:flushall
1.2. redis事务
redis事务特点:redis事务可以一次执行多个命令,批量操作在发送exec命令前,放入队列缓存;收到exec命令进入事务执行,事务中任意命令执行失败,其余的命令依然被执行,在事务执行过程中,其他客户端提交的命令 ,不会插入到事务执行命令序列中。
redis事务阶段:multi:开启事务; exec:提交事务;discard:回滚事务。
2.redis持久化
2.1. redis持久化方式
RDB方式:RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘。 默认方式,将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。
# RDB文件名
dbfilename "dump.rdb"
# RDB文件和AOF文件路径
dir "./"
可通过save和bgsave命令创建快照,持久化的相关配置:
# 当在规定的时间内,Redis发生了写操作的个数满足条件,会触发发生BGSAVE命令。
# save <seconds> <changes>
# 当用户设置了多个save的选项配置,只要其中任一条满足,Redis都会触发一次BGSAVE操作,比如:900秒之内至少一次写操作、300秒之内至少发生10次写操作、60秒之内发生至少10000次写操作都会触发发生快照操作
save 900 1
save 300 10
save 60 10000
AOF方式:AOF持久化会将执行的写命令也写到AOF文件的末尾(默认是 appendonly.aof),当redis重启时会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容
# redis默认关闭AOF机制,可以将no改成yes实现AOF持久化
appendonly no
# AOF文件
appendfilename "appendonly.aof"
# AOF持久化同步频率,always表示每个Redis写命令都要同步fsync写入到磁盘中,但是这种方式会严重降低redis的速度;everysec表示每秒执行一次同步fsync,显示的将多个写命令同步到磁盘中;no表示让操作系统来决定应该何时进行同步fsync,Linux系统往往可能30秒才会执行一次
appendfsync always
# appendfsync everysec
# appendfsync no
两种方式对比:
RDB:一个文件,恢复快,可能丢失数据,写入耗时
AOF:数据di丢失更小,写入快,但是文件比较大,恢复相对慢。