当前位置: 首页 > news >正文

近期军事新闻/站长工具seo综合查询烟雨楼

近期军事新闻,站长工具seo综合查询烟雨楼,什么网站可以免费发布招聘信息,抽奖网站开发前置要求: 需要实现SpringBootredis的基础配置《SpringBoot整合Redis》 通过lua脚本redis可以实现分布式锁; 加锁原子性:通过redis自身的setnxex命令即可,setIfAbsent(“lockKey”, value, timeOut, TimeUnit); 解锁原子性&#…

前置要求:
需要实现SpringBoot+redis的基础配置《SpringBoot整合Redis》

通过lua脚本+redis可以实现分布式锁;

加锁原子性:通过redis自身的setnxex命令即可,setIfAbsent(“lockKey”, value, timeOut, TimeUnit);

解锁原子性:通过redis+lua脚本实现;

定义Lua脚本:
resources目录下创建lua目录,并且创建redisLock.lua文件;
在这里插入图片描述

if redis.call('get',KEYS[1]) == ARGV[1] thenredis.call('del', KEYS[1])return '1';
elsereturn '0'
end

Lua脚本配置:

import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.script.DefaultRedisScript;
import org.springframework.scripting.support.ResourceScriptSource;import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;@Configuration
public class RedisLuaConfig {@Resourceprivate StringRedisTemplate stringRedisTemplate;/*** @return result 返回 1表示,正常,0表示限制访问*/public boolean runLuaScript(String lockKey, String value) {List<String> keyList = Collections.singletonList(lockKey);// 执行脚本 删除锁DefaultRedisScript<String> redisScript = new DefaultRedisScript<>();redisScript.setScriptSource(new ResourceScriptSource(new ClassPathResource("lua/redisLock.lua")));redisScript.setResultType(String.class);String execute = stringRedisTemplate.execute(redisScript, keyList, value);return "1".equals(execute);}
}

Lock锁配置:

@Component
public class RedisLockServer {@Resourceprivate StringRedisTemplate stringRedisTemplate;@Resourceprivate RedisLuaConfig redisLuaConfig;public boolean setLock(String lockKey, String value, long time, TimeUnit timeUnit) {return stringRedisTemplate.opsForValue().setIfAbsent(lockKey, value, time, timeUnit);}public void deleteLock(String lockKey, String value) {boolean script = redisLuaConfig.runLuaScript(lockKey, value);}
}

逻辑代码实现:
为了验收方便,在controller层进行业务的编写,测试时,通过浏览器频繁刷新进行请求,模拟锁机制的触发;

@RestController
@RequestMapping("/redis")
public class Test {@Resourceprivate RedisLockServer redisLockServer;@RequestMapping(value = "/lock")public String reduceSku() throws Exception {String value = UUID.randomUUID().toString();// value值任意即可,设置自动过期时间为10Sboolean lock = redisLockServer.setLock("key", value, 10, TimeUnit.SECONDS);if (lock) {// 当前key没有锁,加锁成功 执行数据库查询System.out.println("===>>>加锁成功");// 模拟耗时8STimeUnit.SECONDS.sleep(8);// 所以要保证验证value值和验证成功必须满足原子性,通过redis+lua实现redisLockServer.deleteLock("key", value);} else {// 当前key已经存在锁,加锁失败System.out.println("===>>>加锁失败,等待重试...");}return "操作成功";}
}

效果:
在这里插入图片描述

http://www.lbrq.cn/news/1369837.html

相关文章:

  • 创建app与网站的区别/免费网站流量
  • 网站建设用模板/百度一下网页首页
  • 做胃镜多少钱天津津门网站I/谷歌浏览器在线打开
  • 中国建设会计协会网站/厦门seo代理商
  • 深圳网站建设公司简介/百度热搜榜在哪里看
  • 中国菲律宾冲突岛屿/肇庆seo优化
  • 杭州网站建设杭州手机网站建设/百度指数官方版
  • 宝安网站建设深圳信科/网址提交入口
  • 做外销b2b网站对比/搜索引擎推广的三种方式
  • 网站空间租用哪个好/网站seo综合诊断
  • 临朐网站建设价格/武汉软件测试培训机构排名
  • 网站没备案可以做商城吗/北京seo技术
  • 网站目录字典/化工网站关键词优化
  • 查找网站开发者/网站设计制作在哪能看
  • 时尚网站设计/友链交易平台
  • bootstrap网站模板/长尾关键词挖掘爱站网
  • 公司网站建设前期情况说明/关键词热度查询
  • 你学做网站学了多久/seo的五个步骤
  • 网站标题字符/十大免费域名
  • ts-428 WordPress/如何做seo
  • 怎么做微信小说网站/视频号链接怎么获取
  • 江门网站建设外包/yande搜索引擎官网入口
  • 移动端网站开发最好的环境/个人引流推广怎么做
  • 更改wordpress用户名/卢镇seo网站优化排名
  • 个人如何做网站/企业网站管理系统
  • 莱州网站建设青岛华夏商务网/seo优化主要工作内容
  • 郑州公司网站制作/以服务营销出名的企业
  • 遂昌建设局网站/0元做游戏代理
  • 哪个网站做招聘海报比较好/网络推广公司简介
  • 湿地公园网站建设/域名注册免费
  • 2025年测绘程序设计比赛--基于统计滤波的点云去噪(已获国特)
  • 更换KR100门禁读头&主机
  • Linux 摄像头实时抓取:V4L2、FFmpeg 与 GStreamer 全面讲解
  • 知识点汇集(二)-misc
  • 「iOS」————SideTable
  • 洛谷 P3870 [TJOI2009] 开关-普及+/提高