• Java操作Redis事务


    package com.example.redis.other;
    
    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.Transaction;
    
    import java.util.List;
    
    public class TestTransaction {
        public static void main(String[] args) throws InterruptedException {
            boolean isSuccess = isSuccess("balance", "debt", 20l);
            System.out.println("main retVal-------"+isSuccess);
        }
    
    
    
        public static boolean isSuccess(String balance,String debt,Long delAmount) throws InterruptedException {
            Jedis jedis = new Jedis("127.0.0.1",6379);
         // Watch 命令用于监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断 jedis.watch(balance); Long amount
    = Long.parseLong(jedis.get(balance)); Long debts = Long.parseLong(jedis.get(debt)); if(amount<delAmount){
           //Redis Unwatch 命令用于取消 WATCH 命令对所有 key 的监视。 jedis.unwatch(); System.out.println(
    "amount can't Less than delAmount !!!!"); return false; } {
           //Redis 通过 MULTI 开始一个事务, 然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务 Transaction transaction
    = jedis.multi(); transaction.decrBy(balance, delAmount); transaction.incrBy(debt,delAmount); //在这里模拟网络延迟时,我们通过redis命令窗口手动去修改balance值。
            
                Thread.sleep(3000);
                List<Object> exec = transaction.exec();
                //执行exec操作时发现balance值被修改,因此终止操作。
                if(exec.size()<=0){
                    System.out.println("balance is upfated by other person,debt is fail!!!");
                    return false;
                }
            
            
                System.out.println("After updated balance== "+Long.parseLong(jedis.get(balance)));
                System.out.println("After updated debt== "+Long.parseLong(jedis.get(debt)));
                return true;
            }
        }
    }

  • 相关阅读:
    cast() 函数进行类型转换
    '+' 拼接字符串引起的小事故
    shell统计ip访问情况并分析访问日志
    Windows 环境上域名配置
    WebApi中Route的作用
    Postman测试WebApi使用总结
    C# VS2017新建WepApi
    C# 反射总结
    winform--同一个项目窗体复制
    winform TextBox设置透明
  • 原文地址:https://www.cnblogs.com/Eugene-Jin/p/12883757.html
Copyright © 2020-2023  润新知