redis 高级特性二

Redis乐观锁与持久化机制详解

一、乐观锁复杂事务控制

乐观锁:基于数据版本(version)的记录机制实现的。即为数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据库表添加一个version字段来实现读取出数据时,将此版本号一同读出,之后更新时,对此版本号加1。此时,将提交的数据版本号与数据库表对应的记录的当前版本号进行比对,如果提交的数据版本号大于数据库当前版本号,则予以更新,否则认为数据过期。

redis如何实现乐观锁:watch命令会监视给定key,当exec时候如果监视的key从调用watch后发生过变化,则整个事务会失败。watch的key是对整个连接有效的,事务也一样。如果连接断开,监视和事务都会被自动清除。exec、discard、unwatch命令都会清除连接中的所有监视。

例如:

打开redis的2个session会话:

session1如下:

223618267.png

session2如下:

223713853.png

则当session1执行exec的时候会失败。

二、持久化机制

redis支持两种持久化方式:

1、snapshotting(快照)默认方式

将内存中的数据以快照的方式写入到二进制文件中,默认的名字为dump.rdb.

可配置如下

224930582.png

2、Append-onlyfile(缩写aof)的方式

aof比快照有更好的持久化,是由于在使用aof时,redis会将每个写命令追加写入文件,当redis重新启动时会通过这个文件来在内存中重建整个数据库。

225844117.png

三、发布和订阅消息

发布订阅(pub/sub)是一种消息通信模式,主要目的是解除消息发布者和消息订阅者之间的耦合,redis作为一个pub/sub的server,在订阅和发布者之间起到了消息路由的功能。

订阅可以通过subscribe和psubscribe命令向redisserver订阅自己的消息类型。当发布者通过publish

命令向redisserver发送特定类型的信息时,订阅该信息类型的client都会收到消息。

举例:打开redis3个session

session1、session2用来订阅,session3用来发布消息,如下图:

session1:

231109944.png

session2:

231151683.png

session3:

231234562.png

四、虚拟内存的使用

把不经常使用的数据从内存交换到磁盘中,从而释放内存用于需要访问的数据。

232123981.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值