美文网首页
Redis学习笔记-2

Redis学习笔记-2

作者: LegendGo | 来源:发表于2020-05-10 18:13 被阅读0次

    Redis是事务机制

    1. Redis不支持事务的回滚机制,当事务发生错误,整个事务会继续执行下去,直到整个事务队列中所有的命令执行完成
    2. Redis 提供两种数据持久化方式
    • RDB:持久化可以把当前进程的数据生成快照保存到磁盘上,触发 RDB 持久化的方式分为手动触发和自动触发。因为持久化操作与命令操作不是同步进行的,所以无法保证事务的持久性。
    • AOF:持久化采用日志的形式记录每个写操作,弥补了 RDB 在数据一致性上的不足,但是采用 AOF 模式,就意味着每条执行命令都需要写入文件中,会大大降低 Redis 的访问性能。启用 AOF 模式需要手动开启,有 3 种不同的配置方式,默认为 everysec,也就是每秒钟同步一次。其次还有 always 和 no 模式,分别代表只要有数据发生修改就会写入 AOF 文件,以及由操作系统决定什么时候记录到 AOF 文件中。
    1. Redis 是单线程程序,在事务执行时不会中断事务,其他客户端提交的各种操作都无法执行,因此你可以理解为 Redis 的事务处理是串行化的方式,总是具有隔离性的

    Redis 的事务处理命令

    1. MULTI 开启一个事务
    2. EXEC 事务执行,将一次型执行事务内的所有命令
    3. DISCARD 取消事务
    4. WATCH 监视一个或是多个键
    5. UNWATCH 取消WATCH命令对所有键的监视

    使用 Redis 的 WATCH 和 MULTI 命令来处理共享资源的并发操作,比如秒杀,抢票等。实际上 WATCH+MULTI 实现的是乐观锁。
    在 Redis 中不存在悲观锁,事务处理要考虑到并发请求的情况,我们需要通过 WATCH+MULTI 的方式来实现乐观锁,如果监视的 KEY 没有发生变化则可以顺利执行事务,否则说明事务的安全性已经受到了破坏,服务器就会放弃执行这个事务,直接向客户端返回空回复(nil),事务执行失败后,我们可以重新进行尝试。

    相关文章

      网友评论

          本文标题:Redis学习笔记-2

          本文链接:https://www.haomeiwen.com/subject/ikijnhtx.html