redisson在redis基础之上,用来控制redis一系列的工具的集合,这些工具是在java的接口实现的。比如说juc、MQ、消息队列(一系列工具的集合)

要实现分布式锁,可以在redis服务器实现,也可以在java项目的工具类上实现。

1、Redisson实现了juc的lock锁,并且可以在分布式的redis环境下使用
juc的可重锁

上篇文章:redis自带的分布式锁,是jvm的一条或者多条线程。

这里redisson框架使用的juc的锁是指分布式环境下的一个或多个redis操作连接。

java redis 工具类 list java redisson_Test

@Autowired
RedisUtil redisUtil;

@RequestMapping("testRedisson")  //  访问http://redisTest/testRedisson,先把host文件的localhost本地地址解析成redisTest
@ResponseBody                         //再配置nginx代理本地地址redisTest,并去端口
public String testRedisson(){

    //防压力测试代码,未加分布式锁,测试是否有重复的v
    //当很多条线程高压力的访问的时候,就很容易出现异常,导致v重复!!!!
    Jedis jedis = redisUtil.getJedis();

    String v = jedis.get("k");
    if(StringUtils.isBlank(v)){
        v="1";
    }
    System.out.println("v值:"+v);
    jedis.set("k",(Integer.parseInt(v)+1)+"");
    jedis.close();

    return "success";
}

防压力测试代码,未加分布式锁,测试是否有重复的v,当很多条线程高压力的访问的时候,就很容易出现异常,导致v重复!!!!这里就是,v重复了!

java redis 工具类 list java redisson_Test_02

2、上边的是单个端口服务的手动的压力测试,有点low。接下来配置nginx的负载均衡,并启动多例模式(即多个端口服务),由apache来压力测试nginx!

(1)设置非单例模式启动

java redis 工具类 list java redisson_java redis 工具类 list_03


java redis 工具类 list java redisson_nginx_04

(2)启动三个redisson测试服务端口

8180端口服务启动成功:

java redis 工具类 list java redisson_redis_05


8181端口服务启动成功:

java redis 工具类 list java redisson_java redis 工具类 list_06


8182端口服务启动成功:

java redis 工具类 list java redisson_nginx_07

(3)配置nginx:

这里有一个严重bug,就是忘记配置host文件了,127.0.0.1本地ip地址需要被redisTest解析,否则nginx.conf文件的配置地址:redisTest解析不了127.0.0.1本地ip,不生效!!!

java redis 工具类 list java redisson_redis_08


java redis 工具类 list java redisson_java redis 工具类 list_09

(4)配置nginx的负载均衡:

java redis 工具类 list java redisson_redis_10

(5)测试:

输入url:http://redistest/testRedisson(刷新请求18次)

java redis 工具类 list java redisson_java redis 工具类 list_11


控制台打印信息(nginx的负载均衡把18请求均衡给这三个端口,每个端口拿到6个请求):

java redis 工具类 list java redisson_java redis 工具类 list_12


java redis 工具类 list java redisson_redis_13


java redis 工具类 list java redisson_nginx_14