- 浏览: 376793 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (760)
- 股票日志 (26)
- Selenium (0)
- selenium 2 环境的搭建 (1)
- 并发 (7)
- 框架开发 (1)
- 动态代理 (2)
- Struts2 (2)
- POI (2)
- jdk (3)
- maven (31)
- spring (35)
- mysql (31)
- 工作机会 (3)
- xtream (1)
- oracle dbms_metadata GET_DDL (0)
- SSI (1)
- DB (61)
- powermock (4)
- java 基础 (25)
- 多线程 (11)
- 高手 (2)
- java 底层 (2)
- 专业网站 (1)
- 开发联想 (1)
- 开发联想 (1)
- bat文件 (2)
- 清queue 语句 (1)
- 清queue 语句 (1)
- jquery (7)
- html5 (1)
- Jenkins (10)
- Linux (17)
- 工作issue (2)
- tomcat log (3)
- jvm (23)
- 项目细节 (0)
- oracle (41)
- 泛型 (3)
- 新知识点 (1)
- 数据库ddl 语句 (0)
- AQ (2)
- jms (0)
- 网络资源 (6)
- github (6)
- Easymock (1)
- Dom 解析XML (1)
- windows命令 (2)
- java (7)
- 正则表达式 (5)
- sequence (1)
- oracle 表meta信息 (1)
- 小工具技巧 (1)
- 辅助工具 (1)
- Junit (1)
- 泛型 generic (2)
- Java程序设计 (1)
- cglib (2)
- 架构师之路 (1)
- 数据库连接池 (5)
- c3p0 (1)
- eclipse使用 (1)
- oracle sql plus (1)
- 码农人生 (3)
- SVN (15)
- sqlplus (2)
- jsoup (1)
- 网络爬虫 (2)
- 新技能 (1)
- zookeeper (4)
- hadoop (1)
- SVNKIT (1)
- 从工具到知识点的整理 (1)
- log4j (13)
- 读文件 (0)
- 转义字符 (1)
- command (1)
- web service (3)
- 锁 (1)
- shell 脚本 (1)
- 遇到的错误 (2)
- tomcat (14)
- 房产 (5)
- bootstrap jquery ui (1)
- easyui (2)
- 个人征信 (1)
- 读写分离 (1)
- 备份 (1)
- rmi (6)
- webservice (1)
- JMX (4)
- 内存管理 (3)
- java设计 (1)
- timer (1)
- lock (2)
- concurrent (2)
- collection (1)
- tns (1)
- java基础 (15)
- File (1)
- 本机资源 (1)
- bat (1)
- windows (4)
- 数据结构 (3)
- 代码安全 (1)
- 作用域 (1)
- 图 (2)
- jvm内存结构 (1)
- 计算机思想 (1)
- quartz (6)
- Mongo DB (2)
- Nosql (4)
- sql (5)
- 第三方Java 工具 jar 项目 (2)
- drools (1)
- java swing (2)
- 调用console (1)
- runtime (1)
- process (1)
- swing (2)
- grouplayout (1)
- dubbo (0)
- bootstrap (0)
- nodejs (2)
- SVN hooks (1)
- jdbc (3)
- jdbc error (1)
- precedure (1)
- partition_key (1)
- active mq (1)
- blob (2)
- Eclipse (6)
- web server (1)
- bootstrapt (2)
- struts (1)
- ajax (1)
- js call back (1)
- 思想境界拓展 (1)
- JIRA (1)
- log (1)
- jaxb (3)
- xml java互相转换 (1)
- 装修 (2)
- 互联网 (2)
- threadlocal (3)
- mybatis (22)
- xstream (1)
- 排序 (1)
- 股票资源 (1)
- RPC (2)
- NIO (3)
- http client (6)
- 他人博客 (1)
- 代理服务器 (1)
- 网络 (2)
- web (1)
- 股票 (5)
- deadlock (1)
- JConsole (2)
- activemq (3)
- oralce (1)
- 游标 (1)
- 12月13日道富内部培训 (0)
- grant (1)
- 速查 (2)
- classloader (4)
- netty (4)
- 设计模式 (2)
- 缓存 (2)
- ehcache (2)
- framework (1)
- 内存分析 (2)
- dump (1)
- memory (2)
- 多高线程,并发 (1)
- hbase (2)
- 分布式系统 (1)
- socket (3)
- socket (1)
- 面试问题 (1)
- jetty (2)
- http (2)
- 源码 (1)
- 日志 (2)
- jni (1)
- 编码约定 (1)
- memorycache (1)
- redis (13)
- 杂谈 (1)
- drool (1)
- blockingqueue (1)
- ScheduledExecutorService (1)
- 网页爬虫 (1)
- httpclient (4)
- httpparser (1)
- map (1)
- 单例 (1)
- synchronized (2)
- thread (1)
- job (1)
- hashcode (1)
- copyonwriteArrayList (2)
- 录制声音 (1)
- java 标准 (2)
- SSL/TLS (1)
- itext (1)
- pdf (1)
- 钻石 (2)
- sonar (1)
- unicode (1)
- 编码 (4)
- html (1)
- SecurityManager (1)
- 坑 (1)
- Restful (2)
- svn hook (1)
- concurrentHashMap (1)
- 垃圾回收 (1)
- vbs (8)
- visual svn (2)
- power shell (1)
- wmi (3)
- mof (2)
- c# (1)
- concurrency (1)
- 劳动法 (1)
- 三国志游戏 (2)
- 三国 (1)
- 洪榕 (2)
- 金融投资知识 (1)
- motan (1)
- tkmybatis mapper (1)
- 工商注册信息查询 (1)
- consul (1)
- 支付业务知识 (2)
- 数据库备份 (1)
- 字段设计 (1)
- 字段 (1)
- dba (1)
- 插件 (2)
- PropEdit插件 (1)
- web工程 (1)
- 银行业知识 (2)
- 国内托管银行 (1)
- 数据库 (1)
- 事务 (2)
- git (18)
- component-scan (1)
- 私人 (0)
- db2 (14)
- alias (1)
- 住房 (1)
- 户口 (1)
- fastjson (1)
- test (6)
- RSA (2)
- 密钥 (1)
- putty (1)
- sftp (1)
- 加密 (1)
- 公钥私钥 (3)
- markdown (1)
- sweet (1)
- sourcetree (1)
- 好工具 (1)
- cmd (1)
- scp (1)
- notepad++ (1)
- ssh免密登录 (1)
- https (1)
- ssl (2)
- js (2)
- h2 (1)
- 内存 (2)
- 浏览器 (1)
- js特效 (1)
- io (1)
- 乱码 (1)
- 小工具 (1)
- 每周技术任务 (1)
- mongodb (7)
- 内存泄漏 (1)
- 码云 (2)
- 如何搭建java 视频服务器 tomcat (1)
- 资源 (1)
- 书 (1)
- 四色建模法 (1)
- 建模 (1)
- 配置 (1)
- 职位 (1)
- nginx (1)
- excel (1)
- log4j2 (2)
- 做菜 (1)
- jmap (1)
- jspwiki (1)
- activiti (1)
- 工作流引擎 (1)
- 安卓 (1)
- acitviti 例子 (1)
- 二维码 (1)
- 工作流 (1)
- powerdesign (2)
- 软件设计 (1)
- 乐观锁 (1)
- 王者荣耀 (1)
- session (2)
- token (5)
- cookie (4)
- springboot (24)
- jwt (2)
- 项目路径 (1)
- magicbook (1)
- requestType (1)
- json (2)
- swagger (1)
- eolinker (1)
- springdata (1)
- springmvc (1)
- controlleradvice (1)
- profile (1)
- 银行四要素 (1)
- 支付人员资源 (1)
- 支付渠道 (1)
- yaml (1)
- 中文编码 (1)
- mongo (2)
- serializable (1)
- 序列化 (1)
- zyd (1)
- unittest (1)
- 工具 (1)
- Something (1)
- 通达信 (1)
- protobuf (1)
- 算法 (1)
- springcloud (2)
- hikari (1)
- rocketmq (7)
- cachecloud (1)
- serfj (1)
- axure (1)
- lombok (1)
- 分布式锁 (1)
- 线程 (2)
- 同步代码块 (1)
- cobar (1)
- mq (1)
- rabbitmq (1)
- 定时执行 (1)
- 支付系统 (3)
- 唱歌 (1)
- elasticjob (1)
- 定时任务 (1)
- 界面 (1)
- flink (2)
- 大数据 (1)
- 接私活 (0)
- 内部培训 (2)
最新评论
-
dannyhz:
做股票从短线 试水,然后 慢慢发现 波段和 中期的故事可挖, ...
搭台唱戏 -
dannyhz:
http://developer.51cto.com/art/ ...
如何自己开发框架 它的注意点是什么
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
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 分布式锁的 改进方式,比-传-化-的优秀 使用redis的setnx()
2018-10-29 15:12 308引用 https://blog.csdn.net/xiaoly ... -
redis分布式锁的代码实践
2018-09-25 15:55 319引用 http://www.importnew.com/193 ... -
redis 实现分布式锁
2018-09-24 23:50 307引用 https://blog.csdn.net/KingCa ... -
哨兵模式详解
2018-08-16 19:21 617引用 https://blog.csdn.net/liguan ... -
单机 哨兵模式模拟
2018-08-16 14:41 389引用 https://blog.csdn.net/fightx ... -
redis 的哨兵模式 介绍
2018-08-16 14:12 428引用 https://www.cnblogs.com/Patr ... -
spring data redis 模块
2018-08-16 12:33 331引用 https://blog.csdn.net/adsada ... -
redis 来生成全局唯一主键
2018-06-12 13:40 1077引用 https://blog.csdn.net/Unkno ... -
redis 持久化 的方式 rdm
2018-03-05 12:09 454http://blog.csdn.net/jy69240518 ... -
redis的事务
2017-06-29 18:31 287http://blog.csdn.net/hechurui/a ... -
redis 键值设计
2017-06-19 18:13 446http://blog.csdn.net/shikaiwenc ... -
spring ehcache redis 两级缓存的方案
2017-03-15 01:17 513http://blog.csdn.net/liaoyulin0 ...
相关推荐
主要介绍了【Redis缓存机制】详解Java连接Redis_Jedis_事务,详细的介绍了Jedis事务和实例,有兴趣的可以了解一下。
基于北京尚硅谷周阳老师讲解的redis。个人学习总结: 包含redis常用命令,redis配置文件,redis持久化,redis事务,redis主从复制,jedis的使用。
Spring mvc整合redis实例(redis连接池) 将所有jedis 增删改进行事务的封装、查询单独做为有返回参数的封装。简化了很多代码
Java通过Jedis操作Redis,演示Redis基本数据类型,主从复制,事务。
01-redis-redis简介.avi,网盘文件,永久连接 02-redis-数据库应用发展历程.avi 03-redis-redis是一种Nosql数据库.avi 04-redis-redis数据库特点简介....54-redis-Jedis的使用.mp4 55-redis-redis的客户端连接工具.avi
在本课程中,你将了解Redis是什么、能干什么、如何用,了解NoSQL的使用场景和概念,快速掌握Redis的安装配置、五大数据类型、常用操作命令、Redis持久化、主从复制、事务控制以及用Jedis操作进行Java开发等知识。...
java连接redis集群批量String类型插入
1、什么是 Redis?简述它的优缺点? 2、Redis 相比 memcached ...27、Redis 事务相关的命令有哪几个? 28、Redis key 的过期时间和永久有效分别怎么设置? 29、Redis 如何做内存优化? 30、Redis 回收进程如何工作的?
27、Redis 事务相关的命令有哪几个? 28、Redis key 的过期时间和永久有效分别怎么设置? 29、Redis 如何做内存优化? 30、Redis 回收进程如何工作的? 31、Redis 回收使用的是什么算法? 32、Redis 如何做大量数据...
在本课程中,你将了解Redis是什么、能干什么、如何用,了解NoSQL的使用场景和概念,快速掌握Redis的安装配置、五大数据类型、常用操作命令、Redis持久化、主从复制、事务控制以及用Jedis操作进行Java开发等知识。...
在本课程中,你将了解Redis是什么、能干什么、如何用,了解NoSQL的使用场景和概念,快速掌握Redis的安装配置、五大数据类型、常用操作命令、Redis持久化、主从复制、事务控制以及用Jedis操作进行Java开发等知识。...
前段时间细节的了解了Jedis的使用,Jedis是redis的java版本的客户端实现。 本文做个总结,主要分享如下内容: 【pipeline】【分布式的id生成器】【分布式锁【watch】【multi】】【redis分布式】 好了,一个一个来。 ...
在测试代码中,我们使用了 ExecutorService 来模拟高并发的场景,使用 Jedis 客户端来连接 Redis 服务器。在 main 方法中,我们首先重置 "watchkeys" 为 0,然后清空 "setsucc" 和 "setfail" 集合。然后,我们使用...
Redis(REmote DIctionary Server)是一个Key Value存储系统,是非常...掌握Redis在Windows和Linux下的安装配置、五大数据类型、常用操作命令、Redis持久化、主从复制、事务控制以及用Jedis操作进行Java开发等技术点
Redis常见面试题1 Redis是当前最流行的...本文总结了Redis常见面试题的知识点,包括Redis的数据结构、缓存策略、持久化策略、事务处理和Java客户端等。掌握这些知识点可以帮助读者更好地理解Redis的原理和应用场景。
四、命令操作(redis的数据结构、高级命令),五、redis的安全性,六、redis主从复制的特点及实现过程(配置),七、redis哨兵,八、redis简单事务,九、持久化(redis的持久化机制RDB/AOF),十、redis发布与订阅...
使用 Jedis 客户端可以 Connecting to Redis 服务器,执行各种 Redis 命令。 九、解决 Redis 连接异常 在使用 Redis 时,可能会遇到连接异常,例如 JedisConnectionException。解决连接异常的方法包括: * 检查...
支持的功能包括排序、连接处理、操作任何类型值的命令、操作字符串值的命令、操作哈希的命令、操作列表的命令、操作集合的命令、操作排序集的命令、操作流的命令、事务、流水线、发布/订阅、持久性控制命令、远程...
视频详细讲解,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 ...07_redis 事务 08_删除策略 09_redis服务器配置 10_高级数据类型 11_主从复制 12_哨兵模式 13_cluster 14_企业级解决方案