Redis 实战------java版本代码优化
来源:互联网 发布:淘宝店铺地址怎么填写 编辑:程序博客网 时间:2024/06/05 02:51
代码清单4-5 listItem()函数
原版代码:
public boolean listItem( Jedis conn, String itemId, String sellerId, double price) { String inventory = "inventory:" + sellerId; String item = itemId + '.' + sellerId; long end = System.currentTimeMillis() + 5000; while (System.currentTimeMillis() < end) { conn.watch(inventory); if (!conn.sismember(inventory, itemId)){ conn.unwatch(); return false; } Transaction trans = conn.multi(); trans.zadd("market:", price, item); trans.srem(inventory, itemId); List<Object> results = trans.exec(); // null response indicates that the transaction was aborted due to // the watched key changing. if (results == null){ continue; } return true; } return false; }
在实际项目运行的改进代码
public boolean listItem(Jedis conn, String itemId, String sellerId, double price) { //1.执行初始化操作:拼接字符串得到key值 String inventory=new StringBuffer().append("inventory:").append(sellerId).toString(); String item=new StringBuffer().append(itemId).append(".").append(sellerId).toString(); long end = System.currentTimeMillis() + 5000; while (System.currentTimeMillis() < end) { //2.对卖家包裹进行监视 conn.watch(inventory); //3.验证卖家想要销售的商品是否存在与卖家的包裹当中 if (!conn.sismember(inventory, itemId)){ conn.unwatch(); return false; } //商品存在于卖家的包裹之中,开启事物 Transaction trans = conn.multi(); //在商品添加到买卖市场中 trans.zadd("market:", price, item); //移除卖家包裹中的商品 trans.srem(inventory, itemId); //提交事物 List<Object> results = trans.exec(); // null response indicates that the transaction was aborted due to // the watched key changing. //判断事物是否成功执行 if (results == null){ //事物执行失败,继续执行事物 continue; } //事物执行成功,返回 return true; } conn.close(); //超时 return false; }
阅读全文
0 0
- Redis 实战------java版本代码优化
- Java代码在实战中的优化
- redis代码实战
- redis实战代码01
- Redis 实战 ---- Java 使用 Redis
- 【java】itoo项目实战之优化后具体代码
- Java 项目优化实战
- Java 项目优化实战
- Java 项目优化实战
- JAVA虚拟机优化实战
- Java 项目优化实战
- java redis代码配置
- java代码操作redis:
- Java代码操作Redis
- Java代码模拟Redis
- tomcat 集群 session复制共享 redis实战版本
- APP开发实战119-APP代码优化
- [Java代码] Java操作Redis
- 关于二叉树的先序/中序/后序/层序遍历表示
- NYOJ C语言合法标识符
- SecondaryNameNode作用
- android 颜色 透明度
- Bakery CodeForces
- Redis 实战------java版本代码优化
- c++ 初始化
- SVN命令执行操作
- 关于缓冲区的一点总结
- 【BZOJ2748】音量调节(动态规划)
- DDPG之OU过程
- oracle:时间间隔
- 算法题—n位正整数去掉k(k<=n)位数字得到最小数
- c语言小练