`
dannyhz
  • 浏览: 376793 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Redis以及jedis的事务处理

 
阅读更多
Redis

http://www.open-open.com/lib/view/open1410485827242.html

引用


首先首先


首先,Redis的RDB 持久化是在指定的时间间隔内生成数据集的时间点快照,具体过程是:
执行bgsave,redis主进程fork一个子进程;<br>主进程继续处理客户端请求;
子进程将当前时间点的内存快照写到一个dump.rdb文件中;
这个过程并不涉及事务。
其次,Redis中实现事务有2种方式,
一是使用

MULTI
EXEC
DISCARD
WATCH 等命令;而是使用Lua脚本事务;具体可以看官方文档:https://link.zhihu.com/?target=http%3A//redis.io/topics/transactions

WATCH 我们就可以轻松地解决这类问题了:



WATCH mykey

val = GET mykey
val = val + 1

MULTI
SET mykey $val
EXEC


使用上面的代码, 如果在
WATCH 执行之后, 执行之前, 有其他客户端修改了 mykey 的值, 那么当前客户端的事务就会失败。 通常,都是使用Lua脚本封装多个redis基本命令,来实现一个复杂的事务操作。


引用


DISCARD 指令就是用来回滚的,AOF 可以配置为每条命令都立即写入磁盘,因此 ACID 是完全具备的。<br><br>但与很多数据库系统不同的是,Redis 采用的是乐观锁,所以在并发的情况下,失败的可能性是很高的。<br><br>再回到你的第一个提问,BGSAVE 的进程是不对外提供服务的,响应用户请求的进程一直是一致的。而如上所述,开启 AOF 后,持久性也是可满足的。只是实际使用中,一般不需要为了极低概率的数据丢失,而去频繁地写入磁盘。<br><br>最后,Redis 的事务对处理较复杂的业务需求非常有用。我在把数据迁移到 Cassandra 的时候,就因为后者只支持很轻量的事务,导致粒度稍大的事务,必须分成很多个小事务来写入(无法保证整个事务的原子性),并且在读取时也必须做各种检查。



引用


1.Redis服务端是个单线程的架构,不同的Client虽然看似可以同时保持连接,但发出去的命令是序列化执行的,这在通常的数据库理论下是最高级别的隔离
2. 用MULTI/EXEC 来把多个命令组装成一次发送,达到原子性
3. 用WATCH提供的乐观锁功能,在你EXEC的那一刻,如果被WATCH的键发生过改动,则MULTI到EXEC之间的指令全部不执行,不需要rollback
4. 其他回答中提到的DISCARD指令只是用来撤销EXEC之前被暂存的指令,并不是回滚



Jedis 的8种 事务处理
http://www.open-open.com/lib/view/open1410485827242.html








分享到:
评论

相关推荐

    【Redis缓存机制】详解Java连接Redis_Jedis_事务

    主要介绍了【Redis缓存机制】详解Java连接Redis_Jedis_事务,详细的介绍了Jedis事务和实例,有兴趣的可以了解一下。

    redis常用命令,redis配置文件,redis持久化,redis事务,redis主从复制,jedis的使用

    基于北京尚硅谷周阳老师讲解的redis。个人学习总结: 包含redis常用命令,redis配置文件,redis持久化,redis事务,redis主从复制,jedis的使用。

    Spring mvc整合redis实例(redis连接池)

    Spring mvc整合redis实例(redis连接池) 将所有jedis 增删改进行事务的封装、查询单独做为有返回参数的封装。简化了很多代码

    Java通过Jedis操作Redis

    Java通过Jedis操作Redis,演示Redis基本数据类型,主从复制,事务。

    Redis从入门到精通视频.rar

    01-redis-redis简介.avi,网盘文件,永久连接 02-redis-数据库应用发展历程.avi 03-redis-redis是一种Nosql数据库.avi 04-redis-redis数据库特点简介....54-redis-Jedis的使用.mp4 55-redis-redis的客户端连接工具.avi

    尚硅谷_Redis.docx

    在本课程中,你将了解Redis是什么、能干什么、如何用,了解NoSQL的使用场景和概念,快速掌握Redis的安装配置、五大数据类型、常用操作命令、Redis持久化、主从复制、事务控制以及用Jedis操作进行Java开发等知识。...

    redis集群批量插入

    java连接redis集群批量String类型插入

    Redis面试专题30道.zip

    1、什么是 Redis?简述它的优缺点? 2、Redis 相比 memcached ...27、Redis 事务相关的命令有哪几个? 28、Redis key 的过期时间和永久有效分别怎么设置? 29、Redis 如何做内存优化? 30、Redis 回收进程如何工作的?

    Redis面试题50道(含答案)_.pdf

    27、Redis 事务相关的命令有哪几个? 28、Redis key 的过期时间和永久有效分别怎么设置? 29、Redis 如何做内存优化? 30、Redis 回收进程如何工作的? 31、Redis 回收使用的是什么算法? 32、Redis 如何做大量数据...

    尚硅谷Redis入门视频

    在本课程中,你将了解Redis是什么、能干什么、如何用,了解NoSQL的使用场景和概念,快速掌握Redis的安装配置、五大数据类型、常用操作命令、Redis持久化、主从复制、事务控制以及用Jedis操作进行Java开发等知识。...

    Redis数据类型视频

    在本课程中,你将了解Redis是什么、能干什么、如何用,了解NoSQL的使用场景和概念,快速掌握Redis的安装配置、五大数据类型、常用操作命令、Redis持久化、主从复制、事务控制以及用Jedis操作进行Java开发等知识。...

    jedis使用指南

    前段时间细节的了解了Jedis的使用,Jedis是redis的java版本的客户端实现。 本文做个总结,主要分享如下内容: 【pipeline】【分布式的id生成器】【分布式锁【watch】【multi】】【redis分布式】 好了,一个一个来。 ...

    redis使用watch秒杀抢购思路.pdf

    在测试代码中,我们使用了 ExecutorService 来模拟高并发的场景,使用 Jedis 客户端来连接 Redis 服务器。在 main 方法中,我们首先重置 "watchkeys" 为 0,然后清空 "setsucc" 和 "setfail" 集合。然后,我们使用...

    2020最新版Redis架构全套视频教程课件

    Redis(REmote DIctionary Server)是一个Key Value存储系统,是非常...掌握Redis在Windows和Linux下的安装配置、五大数据类型、常用操作命令、Redis持久化、主从复制、事务控制以及用Jedis操作进行Java开发等技术点

    Redis常见面试题1

    Redis常见面试题1 Redis是当前最流行的...本文总结了Redis常见面试题的知识点,包括Redis的数据结构、缓存策略、持久化策略、事务处理和Java客户端等。掌握这些知识点可以帮助读者更好地理解Redis的原理和应用场景。

    吴天雄--Redis个人笔记.doc

    四、命令操作(redis的数据结构、高级命令),五、redis的安全性,六、redis主从复制的特点及实现过程(配置),七、redis哨兵,八、redis简单事务,九、持久化(redis的持久化机制RDB/AOF),十、redis发布与订阅...

    redis linux系统安装和操作

    使用 Jedis 客户端可以 Connecting to Redis 服务器,执行各种 Redis 命令。 九、解决 Redis 连接异常 在使用 Redis 时,可能会遇到连接异常,例如 JedisConnectionException。解决连接异常的方法包括: * 检查...

    Jedis:一个小型的redis java客户端-开源

    支持的功能包括排序、连接处理、操作任何类型值的命令、操作字符串值的命令、操作哈希的命令、操作列表的命令、操作集合的命令、操作排序集的命令、操作流的命令、事务、流水线、发布/订阅、持久性控制命令、远程...

    Redis入门到精通视频教程

    视频详细讲解,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 ...07_redis 事务 08_删除策略 09_redis服务器配置 10_高级数据类型 11_主从复制 12_哨兵模式 13_cluster 14_企业级解决方案

Global site tag (gtag.js) - Google Analytics