logo成品效果图网站会员管理系统怎么用
- 作者: 多梦笔记
- 时间: 2026年02月17日 06:15
当前位置: 首页 > news >正文
logo成品效果图网站,会员管理系统怎么用,英语培训机构网站建设策划书,企业网站建设实验报告首先#xff0c;不要将分布式锁想的太复杂#xff0c;如果我们只是平时业务中去使用#xff0c;其实不算难#xff0c;但是很多人写的文章不能让人快速上手#xff0c;接下来#xff0c;一起看下Redisson分布式锁的快速实现 Redisson 是一个在 Redis 的基础上实现的 Java…首先不要将分布式锁想的太复杂如果我们只是平时业务中去使用其实不算难但是很多人写的文章不能让人快速上手接下来一起看下Redisson分布式锁的快速实现 Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格客户端In-Memory Data Grid。它不仅提供了一系列的 redis 常用数据结构命令服务还提供了许多分布式服务例如分布式锁、分布式对象、分布式集合、分布式远程服务、分布式调度任务服务等等。 Redisson其实就是相当于在redis的基础上进行了加强让redisson不像redis的分布式是直接基于指令setnxset if not exists 如果不存在去实现的。 开始配置 因为redission是基于redis的所以我们需要本地安装reidsredis安装这里就不演示了这里是使用springboot创建的项目我们默认项目已经创建完成了所以直接开始配置 项目结构 1、配置redis #以下是application.yml中的配置 server:port: 8083spring:redis:host: localhostport: 6379timeout: 1000jedis:pool:min-idle: 5max-idle: 10max-wait: -1 2、配置pom.xml 引入相关jar包 !– 引入redis –dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency!– 引入redisson –dependencygroupIdorg.redisson/groupIdartifactIdredisson/artifactIdversion3.17.7/version/dependency 3、编写测试并发类 package cn.sendmsg.test; import lombok.extern.slf4j.Slf4j; import org.redisson.Redisson; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.redisson.config.Config; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import java.util.concurrent.TimeUnit;RestController Slf4j public class redissonController {RequestMapping(/testLock)public void testRedissLock(){// 使用Redisson 设置分布式锁//1、配置Redisson客户端 Config对象用于配置 Redisson 客户端的参数。Config config new Config();//2、连接地址 连接方式redis:// 或者 rediss://// 集群使用// config.useClusterServers()// .setScanInterval(2000) // 集群状态扫描间隔时间单位是毫秒// //可以用rediss://来启用SSL连接// .addNodeAddress(redis://127.0.0.1:7000, redis://127.0.0.1:7001)// .addNodeAddress(redis://127.0.0.1:7002);/** userSingleServer():指定使用单个redis服务配置* setAddress() : 设置 Redis 服务器的地址* setPassWord(): 设置连接 Redis 服务器的密码如果有的话* setDatabase(0): 设置连接的数据库索引0就表示第一个* */config.useSingleServer().setAddress(redis://localhost:6379);//3、 创建Redisson客户端RedissonClient redissonClient Redisson.create(config);String lockValue isLock;// 获取红锁RLock redissonLock redissonClient.getLock(lockValue);try {// 后去锁如果获取到返回true// tryLock():尝试3秒内获取锁如果获取到了最长3秒自动释放boolean lock redissonLock.tryLock(3L,3L, TimeUnit.SECONDS);// 获取锁后开始执行需要加锁的逻辑代码if(lock){System.out.println(获取到锁了);for(int i 0;i5;i){log.info(执行逻辑查看打印结果{},i);}}} catch (InterruptedException e) {log.info(获取锁失败失败原因:{},e.getMessage());throw new RuntimeException(e);}finally {// 最后一定要释放锁不然有可能造成死锁现象redissonLock.unlock();}}// 用于jmater测试不加锁的信息对比看RequestMapping(/testNoLock)public void testRedissNoLock(){for(int i 0;i 10;i){log.info(无分布式锁的逻辑i);}}}4、使用jmater测试这是个压测工具可以一次性发多个线程来进行压力测试这个自行安装以下 以下是jmater工具页面截图这个花3分钟时间自己学习下主要还是设置yml、pom.xml、测试类这个属于工具 5、查看本地代码运行结果(注意看打印结果因为获得了分布式锁所以在执行代码块for循环时是顺序的不然不是顺序的) 获取到锁了 2023-11-14 14:51:45.840 INFO 40508 — [nio-8083-exec-4] cn.sendmsg.test.redissonController : 执行逻辑查看打印结果0 2023-11-14 14:51:45.840 INFO 40508 — [nio-8083-exec-4] cn.sendmsg.test.redissonController : 执行逻辑查看打印结果1 2023-11-14 14:51:45.840 INFO 40508 — [nio-8083-exec-4] cn.sendmsg.test.redissonController : 执行逻辑查看打印结果2 2023-11-14 14:51:45.840 INFO 40508 — [nio-8083-exec-4] cn.sendmsg.test.redissonController : 执行逻辑查看打印结果3 2023-11-14 14:51:45.840 INFO 40508 — [nio-8083-exec-4] cn.sendmsg.test.redissonController : 执行逻辑查看打印结果4 获取到锁了 2023-11-14 14:51:45.862 INFO 40508 — [nio-8083-exec-5] cn.sendmsg.test.redissonController : 执行逻辑查看打印结果0 2023-11-14 14:51:45.862 INFO 40508 — [nio-8083-exec-5] cn.sendmsg.test.redissonController : 执行逻辑查看打印结果1 2023-11-14 14:51:45.862 INFO 40508 — [nio-8083-exec-5] cn.sendmsg.test.redissonController : 执行逻辑查看打印结果2 2023-11-14 14:51:45.862 INFO 40508 — [nio-8083-exec-5] cn.sendmsg.test.redissonController : 执行逻辑查看打印结果3 2023-11-14 14:51:45.862 INFO 40508 — [nio-8083-exec-5] cn.sendmsg.test.redissonController : 执行逻辑查看打印结果4 获取到锁了 2023-11-14 14:51:45.866 INFO 40508 — [nio-8083-exec-2] cn.sendmsg.test.redissonController : 执行逻辑查看打印结果0 2023-11-14 14:51:45.866 INFO 40508 — [nio-8083-exec-2] cn.sendmsg.test.redissonController : 执行逻辑查看打印结果1 2023-11-14 14:51:45.866 INFO 40508 — [nio-8083-exec-2] cn.sendmsg.test.redissonController : 执行逻辑查看打印结果2 2023-11-14 14:51:45.866 INFO 40508 — [nio-8083-exec-2] cn.sendmsg.test.redissonController : 执行逻辑查看打印结果3 2023-11-14 14:51:45.866 INFO 40508 — [nio-8083-exec-2] cn.sendmsg.test.redissonController : 执行逻辑查看打印结果4 获取到锁了 2023-11-14 14:51:45.869 INFO 40508 — [nio-8083-exec-3] cn.sendmsg.test.redissonController : 执行逻辑查看打印结果0 2023-11-14 14:51:45.869 INFO 40508 — [nio-8083-exec-3] cn.sendmsg.test.redissonController : 执行逻辑查看打印结果1 2023-11-14 14:51:45.869 INFO 40508 — [nio-8083-exec-3] cn.sendmsg.test.redissonController : 执行逻辑查看打印结果2 2023-11-14 14:51:45.869 INFO 40508 — [nio-8083-exec-3] cn.sendmsg.test.redissonController : 执行逻辑查看打印结果3 2023-11-14 14:51:45.869 INFO 40508 — [nio-8083-exec-3] cn.sendmsg.test.redissonController : 执行逻辑查看打印结果4 获取到锁了 2023-11-14 14:51:45.872 INFO 40508 — [nio-8083-exec-1] cn.sendmsg.test.redissonController : 执行逻辑查看打印结果0 2023-11-14 14:51:45.872 INFO 40508 — [nio-8083-exec-1] cn.sendmsg.test.redissonController : 执行逻辑查看打印结果1 2023-11-14 14:51:45.872 INFO 40508 — [nio-8083-exec-1] cn.sendmsg.test.redissonController : 执行逻辑查看打印结果2 2023-11-14 14:51:45.872 INFO 40508 — [nio-8083-exec-1] cn.sendmsg.test.redissonController : 执行逻辑查看打印结果3 2023-11-14 14:51:45.872 INFO 40508 — [nio-8083-exec-1] cn.sendmsg.test.redissonController : 执行逻辑查看打印结果4 到这里其实我们就已经实现Redisson分布式锁了不要把这个想的太复杂可能在集群时需要注意些。 示例代码中演示了集群时如何设置。这是一个简单的案例但实际开发者获取锁-释放锁也是这么用的。加油 6、不加锁使用jmater打印的信息 不加锁for循环打印时输出日志就不是有顺序的 15:00:40.217 INFO 40508 — [io-8083-exec-17] cn.sendmsg.test.redissonController : 无分布式锁的逻辑3 2023-11-14 15:00:40.217 INFO 40508 — [io-8083-exec-17] cn.sendmsg.test.redissonController : 无分布式锁的逻辑4 2023-11-14 15:00:40.217 INFO 40508 — [io-8083-exec-17] cn.sendmsg.test.redissonController : 无分布式锁的逻辑5 2023-11-14 15:00:40.217 INFO 40508 — [io-8083-exec-17] cn.sendmsg.test.redissonController : 无分布式锁的逻辑6 2023-11-14 15:00:40.217 INFO 40508 — [io-8083-exec-17] cn.sendmsg.test.redissonController : 无分布式锁的逻辑7 2023-11-14 15:00:40.217 INFO 40508 — [io-8083-exec-17] cn.sendmsg.test.redissonController : 无分布式锁的逻辑8 2023-11-14 15:00:40.217 INFO 40508 — [io-8083-exec-17] cn.sendmsg.test.redissonController : 无分布式锁的逻辑9 2023-11-14 15:00:40.081 INFO 40508 — [io-8083-exec-16] cn.sendmsg.test.redissonController : 无分布式锁的逻辑1 2023-11-14 15:00:40.217 INFO 40508 — [io-8083-exec-16] cn.sendmsg.test.redissonController : 无分布式锁的逻辑2 2023-11-14 15:00:40.217 INFO 40508 — [io-8083-exec-16] cn.sendmsg.test.redissonController : 无分布式锁的逻辑3 2023-11-14 15:00:40.217 INFO 40508 — [io-8083-exec-16] cn.sendmsg.test.redissonController : 无分布式锁的逻辑4 2023-11-14 15:00:40.217 INFO 40508 — [io-8083-exec-16] cn.sendmsg.test.redissonController : 无分布式锁的逻辑5 2023-11-14 15:00:40.217 INFO 40508 — [io-8083-exec-16] cn.sendmsg.test.redissonController : 无分布式锁的逻辑6 2023-11-14 15:00:40.217 INFO 40508 — [io-8083-exec-16] cn.sendmsg.test.redissonController : 无分布式锁的逻辑7 2023-11-14 15:00:40.217 INFO 40508 — [io-8083-exec-16] cn.sendmsg.test.redissonController : 无分布式锁的逻辑8 2023-11-14 15:00:40.217 INFO 40508 — [io-8083-exec-16] cn.sendmsg.test.redissonController : 无分布式锁的逻辑9 2023-11-14 15:00:40.078 INFO 40508 — [nio-8083-exec-7] cn.sendmsg.test.redissonController : 无分布式锁的逻辑5 2023-11-14 15:00:40.218 INFO 40508 — [nio-8083-exec-7] cn.sendmsg.test.redissonController : 无分布式锁的逻辑6 2023-11-14 15:00:40.218 INFO 40508 — [nio-8083-exec-7] cn.sendmsg.test.redissonController : 无分布式锁的逻辑7 2023-11-14 15:00:40.218 INFO 40508 — [nio-8083-exec-7] cn.sendmsg.test.redissonController : 无分布式锁的逻辑8 2023-11-14 15:00:40.218 INFO 40508 — [nio-8083-exec-7] cn.sendmsg.test.redissonController : 无分布式锁的逻辑9 2023-11-14 15:00:40.218 INFO 40508 — [io-8083-exec-23] cn.sendmsg.test.redissonController : 无分布式锁的逻辑0 2023-11-14 15:00:40.218 INFO 40508 — [io-8083-exec-23] cn.sendmsg.test.redissonController : 无分布式锁的逻辑1 2023-11-14 15:00:40.218 INFO 40508 — [io-8083-exec-23] cn.sendmsg.test.redissonController : 无分布式锁的逻辑2 2023-11-14 15:00:40.218 INFO 40508 — [io-8083-exec-23] cn.sendmsg.test.redissonController : 无分布式锁的逻辑3 2023-11-14 15:00:40.218 INFO 40508 — [io-8083-exec-23] cn.sendmsg.test.redissonController : 无分布式锁的逻辑4 2023-11-14 15:00:40.218 INFO 40508 — [io-8083-exec-23] cn.sendmsg.test.redissonController : 无分布式锁的逻辑5 2023-11-14 15:00:40.218 INFO 40508 — [io-8083-exec-23] cn.sendmsg.test.redissonController : 无分布式锁的逻辑6 2023-11-14 15:00:40.218 INFO 40508 — [io-8083-exec-23] cn.sendmsg.test.redissonController : 无分布式锁的逻辑7 2023-11-14 15:00:40.218 INFO 40508 — [io-8083-exec-23] cn.sendmsg.test.redissonController : 无分布式锁的逻辑8 2023-11-14 15:00:40.218 INFO 40508 — [io-8083-exec-23] cn.sendmsg.test.redissonController : 无分布式锁的逻辑9 2023-11-14 15:00:40.210 INFO 40508 — [io-8083-exec-25] cn.sendmsg.test.redissonController : 无分布式锁的逻辑6 2023-11-14 15:00:40.218 INFO 40508 — [io-8083-exec-25] cn.sendmsg.test.redissonController : 无分布式锁的逻辑7 2023-11-14 15:00:40.218 INFO 40508 — [io-8083-exec-25] cn.sendmsg.test.redissonController : 无分布式锁的逻辑8 2023-11-14 15:00:40.218 INFO 40508 — [nio-8083-exec-7] cn.sendmsg.test.redissonController : 无分布式锁的逻辑0 2023-11-14 15:00:40.218 INFO 40508 — [nio-8083-exec-7] cn.sendmsg.test.redissonController : 无分布式锁的逻辑1 2023-11-14 15:00:40.218 INFO 40508 — [nio-8083-exec-7] cn.sendmsg.test.redissonController : 无分布式锁的逻辑2 2023-11-14 15:00:40.218 INFO 40508 — [nio-8083-exec-7] cn.sendmsg.test.redissonController : 无分布式锁的逻辑3 2023-11-14 15:00:40.218 INFO 40508 — [nio-8083-exec-7] cn.sendmsg.test.redissonController : 无分布式锁的逻辑4 2023-11-14 15:00:40.218 INFO 40508 — [nio-8083-exec-7] cn.sendmsg.test.redissonController : 无分布式锁的逻辑5 2023-11-14 15:00:40.218 INFO 40508 — [nio-8083-exec-7] cn.sendmsg.test.redissonController : 无分布式锁的逻辑6 2023-11-14 15:00:40.218 INFO 40508 — [nio-8083-exec-7] cn.sendmsg.test.redissonController : 无分布式锁的逻辑7 2023-11-14 15:00:40.218 INFO 40508 — [nio-8083-exec-7] cn.sendmsg.test.redissonController : 无分布式锁的逻辑8 2023-11-14 15:00:40.218 INFO 40508 — [nio-8083-exec-7] cn.sendmsg.test.redissonController : 无分布式锁的逻辑9 2023-11-14 15:00:40.211 INFO 40508 — [io-8083-exec-26] cn.sendmsg.test.redissonController : 无分布式锁的逻辑0
- 上一篇: logofree制作网站四川住房建设厅网站
- 下一篇: logo免费设计网站きょこんきょうしゃ在线
相关文章
-
logofree制作网站四川住房建设厅网站
logofree制作网站四川住房建设厅网站
- 站长
- 2026年02月17日
-
linux增加网站网站建设烟台
linux增加网站网站建设烟台
- 站长
- 2026年02月17日
-
linux系统如何做网站中山市网站开发公司
linux系统如何做网站中山市网站开发公司
- 站长
- 2026年02月17日
-
logo免费设计网站きょこんきょうしゃ在线
logo免费设计网站きょこんきょうしゃ在线
- 站长
- 2026年02月17日
-
logo免费设计网站有哪些长沙企业100强名单
logo免费设计网站有哪些长沙企业100强名单
- 站长
- 2026年02月17日
-
logo免费设计网站中端网站建设
logo免费设计网站中端网站建设
- 站长
- 2026年02月17日
