测试环境启动时候进行清空redis所有缓存操作的java代码

目录

目的:

1、调用代码逻辑如下:java-code

2、redis的事务处理,要小心重构掉!对于原子性原则上不进行破坏!

3、依赖Pom的配置


目的:

测试环境要重构的时候,会把所有的常量redis缓存重新赋值,有些失效的已经会永远的停留在上面,所以,在测试环境开发时候有必要清空所有的redis缓存数据,这样测试起来更为精准,所以可是使用功能jedis的原始方法进行删除redis的数据,然后测试环境启动时候进行情况操作!

1、调用代码逻辑如下:java-code


import java.util.Iterator;
import java.util.Set;

import redis.clients.jedis.Jedis;

public class APIRedis {

    public static void main(String[] args) {
        //redis 的链接配置
		Jedis jedis = new Jedis("127.0.0.1",6379);
        //获取所有的Redis的key数据
        Set<String> set = jedis.keys("*");
        Iterator<String> it = set.iterator();
        if (set.contains("FUNCTION_FILTER_STATUS")) {
            System.out.println("查询到了->" + jedis.get("FUNCTION_FILTER_STATUS"));
        }
        //全部删除所有的redis数据--针对测试环境就是全部删除,生产环境不可以随意删除,要有环境变量进行区分开来
        while (it.hasNext()) {
            String str = it.next();
            jedis.del(str);
            System.out.println(str);
        }
        //redis 的set数据
		jedis.set("balance","10000");
		System.out.println(jedis.get("balance"));
    }
}

2、redis的事务处理,要小心重构掉!对于原子性原则上不进行破坏!


import redis.clients.jedis.Jedis;
import redis.clients.jedis.Transaction;

/***
 * redis的事务处理
 */
public class RedisTXDemo {
    /****
     * 事务逻辑方法,进行逻辑运算
     * @return
     * @throws InterruptedException
     */
    public static boolean transMethod() throws InterruptedException {
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        int balance;// 可用余额
        int debt;// 欠额
        int amtToSubtract = 10;// 实刷额度
        jedis.watch("balance");
        Thread.sleep(8000); // 停止程序一小段时间,外面先修改balance数据后看效果
        balance = Integer.parseInt(jedis.get("balance"));
        if (balance < amtToSubtract) {
            jedis.unwatch();
            System.out.println("The Data has been updated before you commit or balance < amtToSubtract");
            return false;
        } else {
            System.out.println("***********transaction开始进行原子性操作!");

            Transaction transaction = jedis.multi();
            transaction.decrBy("balance", amtToSubtract);
            transaction.incrBy("debt", amtToSubtract);
            //事务进行执行操作
            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)时就会报错, 程序中通常可以捕获这类错误再重新执行一次,直到成功。
     *
     * @throws InterruptedException
     */
    public static void main(String[] args) throws InterruptedException {
        init();
        boolean retValue = RedisTXDemo.transMethod();
        System.out.println("main retValue-------: " + retValue);
    }

    /***
     * 主从备份,主机+从机,
     */
    public static void init() {
        //主机-Master
        Jedis jedisM = new Jedis("10.0.0.152", 6379);
        Jedis jedisS = new Jedis("127.0.0.1", 6379);
        jedisS.slaveof("10.106.0.152", 6379);
        //redis 的set数据
        jedisM.set("balance", "10000");
        System.out.println(jedisM.get("balance"));
        String result = jedisS.get("k3");
        System.out.println("#############result: " + result);
    }

}

3、依赖Pom的配置

 <!-- https://mvnrepository.com/artifact/commons-pool/commons-pool -->
        <dependency>
            <groupId>commons-pool</groupId>
            <artifactId>commons-pool</artifactId>
            <version>1.6</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.3</version>
        </dependency>

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苦思冥想行则将至

穷,有钱的大爷上个两分钱吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值