Redis的事物
multi命令:开启事物命令,开启后将任务放在队列中
exec:执行命令
discard:回滚
Redis的原子性
事物中执行的命令执行失败,不具备原子性
事物在执行的命令如果有误(语法错误),具备原子性
watch和unwatch关键字用法
当watch了num1就监视了num1的值,在执行事物的命令时,执行前,num1的值发生了改变,则事物取消
保证在事物操作一个key时,key不能被其他事物或客户端修改
watch是基于CAS算法完成的
CAS算法
比较并交换,是一种无锁算法,实现多个线程在操作同一个资源时保持同步性
实现过程:有几个记录值,分别是旧值、新值和更新值,当要开始操作资源时,先在线程的缓存中记录一个旧值,开始对值进行修改记录到更新值中
在java中可以使用atomicInteger来实现CAS算法
Redis的新特性5.0
Redis的stream数据类型,能满足消息队列的全部需求
xread 只读,不消费
RDB备份的工作方式
1.Redis备份时,调用forks启动一个子进程,redis同时拥有父进程和子进程,父进程负责redis的读写工作,子进程负责rdb备份
2.子进程有一个虚拟的内存和父进程共用的实际的虚拟物理内存,在开始备份的这点,子进程虚拟内存的数据就确定了,但父类进程仍然可以进行读写工作,这时候的读写工作不会被备份
AOF方式
备份的不是数据的二进制内容,备份的是每条修改的命令
AOF的缺点
1.AOF文件比RDB文件要大,通常采用文件名滚动的方式来存储,在恢复时比RDB麻烦,
AOF和RDB 的区别
1.AOF的同步性好,可以做到每秒、实施的备份,而RDB是时间极更新数量的触发,同步性差
2.AOF速度比RDB慢,但是AOF存储的数据比较完整
redis读写分离主从复制
作用:
- 读写分离主从复制:解决服务器的压力
- 容灾备份
如何配置主机和从机,:
- 通过命令的方式,在redis中使用slaveof命令指定 主机是哪台机器