Redis4——事务和锁机制、持久化

一些linux命令

重启redis

ps -ef | grep redis      找redis的进程号
kill -9 进程号

启动
redis-server /etc/redis.conf

也可以shutdown
在这里插入图片描述

redis-server了以后 就redis-cli进入客户端可以输命令了

搜索文件里的某个内容 vi以后 不进入插入模式 直接 / 后面跟要搜索的

复制文件

cp dump.rdb  d.rdb     把dump.rdb复制一份 复制的文件名叫d.rdb

文件改名

mv  d.rdb  dump.rdb 把d.rdb改名为dump.rdb   命令用来为文件或目录改名、或将文件或目录移入其它位置。

显示文件的行号

::set nu

ll 和 ls 的区别
在这里插入图片描述

事务

Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化,按顺序执行,事务在执行的过程中,不会被其他客户端发送来的命令请求打断。

redis事务主要作用 串联多个命令防止别的命令插队

在这里插入图片描述

exec之后 事务就结束了 想放弃只能在组队阶段 也就是 执行了 multi 之后 exec之前
也就是说 discard表示的是组队失败

组队时有一个命令失败 所有命令都会失败
组队成功 执行时 有一个命令失败 不会影响其他命令

锁机制

乐观锁 悲观锁

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

CAS操作与ABA问题

CAS操作与ABA问题
cas compare and swap 比较和换 这是一个原子性操作

带版本号的 cas操作可以避免 ABA问题

秒杀全是问题

秒杀 他用了一个linux的工具 httpd-tools 来模拟并发

为什么会timeout呢 为什么会超卖呢 为什么会库存遗留呢

用连接池解决time out问题 用watch和事务 解决超卖问题 但这个又有库存遗留问题

我不懂 为什么连接池可以解决time out 为什么watch和事务就可以解决超卖

库存遗留是因为没有自旋 乐观锁对比不对这个线程就没有操作了 没有再去尝试???

他用lua脚本解决了库存遗留 为什么就能解决呢 lua脚本不就像一个悲观锁嘛 一个线程执行一个原子操作(减库存 添用户成功的id) 然后再轮到下一个线程??? 是这样嘛 那这样不就相当于悲观锁了

持久化

生成的.rdb 和 .aof 文件都是和redis启动的目录在同一级 因为我们是 redis-server /etc/redis.conf 启动的嘛 那生成的这两个文件就和 redis-server在同一级目录
在这里插入图片描述

RDB(默认这种持久化策略就是开启的)

RDB redis database 每隔一段时间 把当前的数据快照保存到磁盘
redis fork一个子进程 写时复制技术 往临时文件里面写东西 临时文件写好了就替换上一次的持久化文件

copy on write 读时共享 写时拷贝 快照持久化文件会默认保存在redis的启动目录中 默认持久化文件名 dump.rdb
在这里插入图片描述
在这里插入图片描述

redis.conf里可以设置 如果一段时间内有多少key发生了变化就保存一个rdb
比如下面这个 900秒内如果1个key变化 就保存一次 300秒内 10个key变化保存一次 20秒内3个key变化保存一次

就是说 我可能不到20秒 10秒我就改变了三个key 那也算是在20秒之内 那就存一个rdb 然后开启下一个20秒计时
在这里插入图片描述
他这个备份 只要文件名是dump.rdb默认的嘛 你把redis这个进程kill掉 再重启 只要有这个文件在 重启后的redis就有了dump.rdb里的内容

AOF(append only file 默认不开启)

需要在redis.conf里开启 appendonly yes
以日志的形式记录 写操作 只记录写操作(增删改)等改变内容的 指令 读操作不记录
在这里插入图片描述
异常恢复的意思是 如果aof文件损坏了 redis启动会失败 和aof文件同一级下还有一个 redis-check-aof 只要–fix这个文件就可以修复 aof文件
在这里插入图片描述

在这里插入图片描述
有人说 appendfsync everysec 不久相当于 RDB save 1 1 或者 save 1 10 不不不
在这里插入图片描述

AOF有一个重写机制
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值