事务
- redis事务本质:一组命令的集合,一个事务中的所有的命令都会被序列化,在事务执行的过程中 会按照顺序执行,一次性、顺序性、排他性
- redis事务没有隔离级别的概念
- 所有的命名在事务中,并没有直接被执行,只有发起exec命令时才执行
事务总结
- 开启事务 multi
- 命令入队 set k1 v1
- 执行事务 exec
- 取消事务 discard
监控 watch
- 悲观锁:
- 很悲观 认为什么时候都会出问题,无论做什么都会加锁
- 乐观锁
- 很乐观 认为什么时候都不会出问题,所以不会上锁,更新数据的时候去判断一下,在此期间是否修改过该数据
- 获取version
- 更新的时候比较version
jedis
- 是什么:是redis官方推荐的java连接工具 使用java执行redis的中间件
redis 持久化
redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,一旦服务器进程退出,服务器中的数据库状态也会消失,所以redis提供了持久化功能
rdb (redis database)
-
在指定的时间间隔内将内存中的数据集快照写入磁盘,恢复时将快照文件直接读到内存中(是什么)
-
优点:
- 适合大规模的数据恢复
- 对数据的完整性要求不高
-
缺点
-
需要一定的时间间隔进程操作,如果最后一次redis意外中断,这个最后一次的修改数据就没有了
-
fork进程的时候,会占用一定的内存空间
aof
- 将我们的所有的命令都记录下来 恢复的时候把这个文件全部执行一遍
- 默认不开启 将配置文件的appendonly 改为yes即开启
- 优点
- 每一次的修改都同步,文件的完整性会更好
- 每秒同步一次 可能会丢失一秒的数据
- 从不同步,效率最高的
- 缺点
- 相对于数据文件,aof远大于rdb,修复的速度也比rdb慢
- aof运行效率也要比rdb慢 所以redis默认是rdb的持久化