采用Redisson框架在Java层面解决缓存击穿问题

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

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

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

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

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

@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重复了!
在这里插入图片描述

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

(1)设置非单例模式启动
在这里插入图片描述
在这里插入图片描述

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

8180端口服务启动成功:
在这里插入图片描述
8181端口服务启动成功:
在这里插入图片描述
8182端口服务启动成功:
在这里插入图片描述

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

(4)配置nginx的负载均衡:
在这里插入图片描述

(5)测试:
输入url:http://redistest/testRedisson(刷新请求18次)
在这里插入图片描述
控制台打印信息(nginx的负载均衡把18请求均衡给这三个端口,每个端口拿到6个请求):
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值