下载此文档

Redis的基础事务和常用操作.docx


文档分类:办公文档 | 页数:约4页 举报非法文档有奖
1/4
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/4 下载此文档
文档列表 文档介绍
Redis的基础事务和常用操作
和其他大部分的 NoSQL 不同,Redis 是存在事务的,尽管它没有数据库那么强大,但是它还是很有用的,尤其是在那些需要高并发的网站当中。
使用 Redis 读/写数据要比数据库快得多,如果使用 Redis 事务在某种场合下去替代数据库事务,则可以在保证数据一致性的同时,大幅度提高数据读/写的响应速度。
细心的读者也许可以发现笔者一直都很强调性能,因为互联网和传统企业管理系统不一样,互联网系统面向的是公众,很多用户同时访问服务器的可能性很大,尤其在一些商品抢购、抢红包等场合,对性能和数据的一致性有着很高的要求,而存储系统的读/写响应速度对于这类场景的性能的提高是十分重要的。
在 Redis 中,也存在多个客户端同时向 Redis 系统发送命令的并发可能性,因此同一个数据,可能在不同的时刻被不同的线程所操纵,这样就出现了并发下的数据一致的问题。为了保证异性数据的安全性,Redis 为提供了事务方案。而 Redis 的事务是使用 MULTI-EXEC 的命令组合,使用它可以提供两个重要的保证:
事务是一个被隔离的操作,事务中的方法都会被 Redis 进行序列化并按顺序执行,事务在执行的过程中不会被其他客户端发生的命令所打断。
事务是一个原子性的操作,它要么全部执行,要么就什么都不执行。
在一个 Redis 的连接中,请注意要求是一个连接,所以更多的时候在使用 Spring 中会使用 SessionCallback 接口进行处理,在 Redis 中使用事务会经过 3 个过程:
开启事务。
命令进入队列。
执行事务。
先来学****Redis 事务命令,如表 1 所示。
表 1 Redis事务命令
命 令
说 明
备 注
multi
开启事务命令,之后的命令就进入队列,而不会马上被执行
在事务生存期间,所有的 Redis 关于数据结构的命令都会入队
watch key1 [key2......]
监听某些键,当被监听的键在事务执行前被修改,则事务会被回滚
使用乐观锁
unwatch key1 [key2......] 
取消监听某些键
——
exec
执行事务,如果被监听的键没有被修改,则采用执行命令,否则就回滚命令
在执行事务队列存储的命令前,Redis 会检测被监听的键值对有没有发生变化,如果没有则执行命令, 否则就回滚事务
discard
回滚事务
回滚进入队列的事务命令,之后就不能再用 exec 命令提交了
在 Redis 中开启事务是 multi 命令,而执行事务是 exec 命令。multi 到 exec 命令之间的 Redis 命令将采取进入队列的形式,直至 exec 命令的出现,才会一次性发送队列里的命令去执行,而在执行这些命令的时候其他客户端就不能再插入任何命令了,这就是 Redis 的事务机制。
Redis 命令执行事务的过程,如图 1 所示。
图 1 Redis命令执行事务的过程
从图 1 中可以看到,先使用 multi 启动了 Redis 的事务,因此进入了 set 和 get 命令,我们可以发现它并未马上执行,而是返回了一个“QUEUED”的结果。
这说明 Redis 将其放入队列中,并不会马上执行,当命令执行到 exec 的

Redis的基础事务和常用操作 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数4
  • 收藏数0 收藏
  • 顶次数0
  • 上传人simple
  • 文件大小38 KB
  • 时间2021-07-18