redis事务加锁之java操作
来源:互联网 发布:网络拓扑图素材 编辑:程序博客网 时间:2024/06/05 07:24
redis事务加锁之java操作
package com.czmec.redis.test;import redis.clients.jedis.Jedis;import redis.clients.jedis.Transaction;/** * Created by Administrator on 2016/12/6 0006. */public class affairLock { /** * 加锁 */ public boolean transMethod(){ Jedis jedis=new Jedis("112.74.34.11",6379); int balance;//可用余额 int debt;//欠款 int amtTosutract =10;//实刷额度 jedis.watch("balance"); balance=Integer.parseInt(jedis.get("balance")); if(balance<amtTosutract){ jedis.unwatch(); System.out.println("modify"); return false; }else{ System.out.println("***********transaction"); Transaction transaction=jedis.multi(); transaction.decrBy("balance",amtTosutract); transaction.incrBy("debt",amtTosutract); transaction.exec(); balance=Integer.parseInt(jedis.get("balance")); debt=Integer.parseInt(jedis.get("debt")); System.out.println(balance); System.out.println(debt); return true; } } /** * 通俗易懂的讲 watch命令就是标记一个键,如果标记了一个键,在事务提交前如果该建被别人修改过,那么事务就会失败 * 这种情况通常可以在程序中 重新在尝试一次。 * 首先标记了键balance 然后检查 余额是不是足够,不足就取消标记 并不做减扣,足够的话,就启动事务进行更新操作 * 如果在此期间 balance被其他人修改,那再提交事务(执行exec)时就会报错,程序中通常可以捕获这类错误再重新执行一次,知道成功 * @param args */ public static void main(String [] args){ affairLock testTransaction=new affairLock(); boolean retValue=testTransaction.transMethod(); System.out.println("main retValue---"+retValue); }}
0 0
- redis事务加锁之java操作
- java操作redis事务
- redis 学习手册之事务 transaction 操作
- java并发之加锁
- redis 加锁
- redis-事务操作
- redis学习心得之三-【java操作redis】
- redis学习心得之三-【java操作redis】
- redis学习心得之三-【java操作redis】
- redis学习心得之三-【java操作redis】
- Redis笔记三之Java操作Redis
- java redis之jredis操作
- redis数据库之事务
- Redis 之 事务
- Redis基础之事务
- Redis之十八 事务
- Redis之三:事务
- Redis之事务
- Android---bitmap与file类型互换
- 线程学习四:volatile 关键字
- Python格式化输出方法
- 从C转到Java下打通了任督二脉
- 右滑菜单SlidingMenu
- redis事务加锁之java操作
- idea使用记录(搭建maven)
- C++ 多线程调用Python脚本
- JPA中的failed to lazily initialize a collection of role:xxxx no session or session was closed异常分析与解决
- springmvc实现ajax上传例子
- Swift学习(JSON转Model)HandyJSON 的学习理解
- 实现完整版的管理员主窗体和学生主窗体
- 微信小程序 调用code换取session_key接口 提示41002 appid missing的问题
- iOS开发之UITextView,设置textView的行间距及placeholder