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





















本文转自shayang8851CTO博客,原文链接:http://blog.51cto.com/janephp/1300291,如需转载请自行联系原作者

相关文章
|
存储 缓存 NoSQL
聊聊 Redis 的高级特性之一: 发布订阅
Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。 图中,消费者1和消费者2 订阅了 Redis 服务的频道 channel ,当生产者通过 PUBLISH 命令发送给频道 channel 时, 这个消息就会被发送给订阅它的两个客户端。
聊聊 Redis 的高级特性之一: 发布订阅
|
存储 缓存 监控
Redis设计与实现——Redis命令参考与高级特性
Redis 是一个高性能的键值存储系统,支持丰富的数据类型(字符串、列表、哈希、集合等)和多种高级功能。本文档涵盖 Redis 的核心命令分类,包括数据类型操作、事务与脚本、持久化、集群管理、系统监控等。特别介绍了事务的原子性特性、Lua 脚本的执行方式及优势、排序机制、发布订阅模型以及慢查询日志和监视器工具的使用方法。适用于开发者快速掌握 Redis 常用命令及其应用场景,优化系统性能与可靠性。
633 12
|
消息中间件 NoSQL Unix
Redis的基本特性以及其基础命令用法
这只是冰山一角,Redis的强大功能和简洁的操作方法值得我们深入了解和掌握,是复杂数据问题解决的有力工具。所以,来一场有趣的Redis冒险吧!
483 6
|
存储 缓存 监控
利用 Redis 缓存特性避免缓存穿透的策略与方法
【10月更文挑战第23天】通过以上对利用 Redis 缓存特性避免缓存穿透的详细阐述,我们对这一策略有了更深入的理解。在实际应用中,我们需要根据具体情况灵活运用这些方法,并结合其他技术手段,共同保障系统的稳定和高效运行。同时,要不断关注 Redis 缓存特性的发展和变化,及时调整策略,以应对不断出现的新挑战。
332 10
|
存储 消息中间件 NoSQL
【redis】redis的特性和主要应用场景
【redis】redis的特性和主要应用场景
871 2
|
NoSQL 关系型数据库 MySQL
Redis 事务特性、原理、具体命令操作全方位诠释 —— 零基础可学习
本文全面阐述了Redis事务的特性、原理、具体命令操作,指出Redis事务具有原子性但不保证一致性、持久性和隔离性,并解释了Redis事务的适用场景和WATCH命令的乐观锁机制。
1619 0
Redis 事务特性、原理、具体命令操作全方位诠释 —— 零基础可学习
|
消息中间件 缓存 NoSQL
Redis快速度特性及为什么支持多线程及应用场景
Redis快速度特性及为什么支持多线程及应用场景
436 11
|
NoSQL Java 调度
Lettuce的特性和内部实现问题之Redis的管道模式提升性能的问题如何解决
Lettuce的特性和内部实现问题之Redis的管道模式提升性能的问题如何解决
325 0
|
NoSQL 网络协议 安全
Lettuce的特性和内部实现问题之Lettuce天然地使用管道模式与Redis交互的问题如何解决
Lettuce的特性和内部实现问题之Lettuce天然地使用管道模式与Redis交互的问题如何解决
362 0
|
监控 NoSQL 网络安全
Redis 6和7:探索新版本中的新特性
Redis 6和7:探索新版本中的新特性