当前位置: 首页 > news >正文 廊坊建设网站壁纸网站设计制作专业 news 2025/10/27 18:58:32 廊坊建设网站,壁纸网站设计制作专业,网站背景特效,包工头接活app哪个好目录 2.1. 基本实现2.2. 防死锁2.3. 防误删2.4. redis中的lua脚本2.4.1 redis 并不能保证2.4.2 lua介绍 2.5. 使用lua保证删除原子性 2.1. 基本实现 借助于redis中的命令setnx(key, value)#xff0c;key不存在就新增#xff0c;存在就什么都不做。同时有多个客户端发送setn… 目录 2.1. 基本实现2.2. 防死锁2.3. 防误删2.4. redis中的lua脚本2.4.1 redis 并不能保证2.4.2 lua介绍 2.5. 使用lua保证删除原子性 2.1. 基本实现 借助于redis中的命令setnx(key, value)key不存在就新增存在就什么都不做。同时有多个客户端发送setnx命令只有一个客户端可以成功返回1true其他的客户端返回0false。 多个客户端同时获取锁setnx获取成功执行业务逻辑执行完成释放锁del其他客户端等待重试 改造StockService方法 /*** redis setnx实现分布式锁最基本的哪一种 */public void deduct() {// 加锁setnxBoolean lock this.redisTemplate.opsForValue().setIfAbsent(lock, 111);if (!lock) {// 没有获取到锁进行重试try {Thread.sleep(50);this.deduct();} catch (InterruptedException e) {e.printStackTrace();}} else {try {// 1. 查询库存信息String stockStr redisTemplate.opsForValue().get(stock: 1001);// 2. 判断库存是否充足if (stockStr ! null stockStr.length() ! 0) {Long stock Long.parseLong(stockStr);if (stock 0) {redisTemplate.opsForValue().set(stock: 1001, String.valueOf(stock - 1));}}} finally {// 解锁this.redisTemplate.delete(lock);}}}使用 jmeter 进行压测 查看库存数量 上述代码优化不断重试的过程中一直进行递归最终导致栈的溢出。 解决 /*** while循环代替递归解决不断重试可能导致的栈溢出的问题*/public void deduct() {// 加锁setnxwhile (this.redisTemplate.opsForValue().setIfAbsent(lock1, 1)) {try {Thread.sleep(50);} catch (InterruptedException e) {e.printStackTrace();}try {// 1. 查询库存信息String stockStr redisTemplate.opsForValue().get(stock: 1001);// 2. 判断库存是否充足if (stockStr ! null stockStr.length() ! 0) {Long stock Long.parseLong(stockStr);if (stock 0) {redisTemplate.opsForValue().set(stock: 1001, String.valueOf(stock - 1));}}} finally {// 解锁this.redisTemplate.delete(lock1);}}} 2.2. 防死锁 问题setnx刚刚获取到锁当前服务器宕机导致del释放锁无法执行进而导致锁无法锁无法释放死锁 解决给锁设置过期时间自动释放锁。 设置过期时间两种方式 通过expire设置过期时间缺乏原子性如果在setnx和expire之间出现异常锁也无法释放使用set指令设置过期时间set key value ex 3 nx既达到setnx的效果又设置了过期时间 2.3. 防误删 持有锁的线程在锁的内部出现了阻塞导致他的锁自动释放这时其他线程线程2来尝试获得锁就拿到了这把锁然后线程2在持有锁执行过程中线程1反应过来继续执行而线程1执行过程中走到了删除锁逻辑此时就会把本应该属于线程2的锁进行删除这就是误删别人锁的情况说明 解决 setnx获取锁时设置一个指定的唯一值例如uuid释放前获取这个值判断是否自己的锁 问题删除操作缺乏原子性。 场景 index1执行删除时查询到的lock值确实和uuid相等index1执行删除前lock刚好过期时间已到被redis自动释放index2获取了lockindex1执行删除此时会把index2的lock删除 解决方案没有一个命令可以同时做到判断 删除所有只能通过其他方式实现LUA脚本 2.4. redis中的lua脚本 2.4.1 redis 并不能保证 redis采用单线程架构可以保证单个命令的原子性但是无法保证一组命令在高并发场景下的原子性。 如果redis客户端通过lua脚本把3个命令一次性发送给redis服务器那么这三个指令就不会被其他客户端指令打断。Redis 也保证脚本会以原子性的方式执行 当某个脚本正在运行的时候不会有其他脚本或 Redis 命令被执行。 这和使用 MULTI/ EXEC 包围的事务很类似。 2.4.2 lua介绍 2.5. 使用lua保证删除原子性 文章转载自: http://www.morning.xznrk.cn.gov.cn.xznrk.cn http://www.morning.rzdpd.cn.gov.cn.rzdpd.cn http://www.morning.kqgqy.cn.gov.cn.kqgqy.cn http://www.morning.chfxz.cn.gov.cn.chfxz.cn http://www.morning.bpmdz.cn.gov.cn.bpmdz.cn http://www.morning.tjjkn.cn.gov.cn.tjjkn.cn http://www.morning.mwlxk.cn.gov.cn.mwlxk.cn http://www.morning.hwbmn.cn.gov.cn.hwbmn.cn http://www.morning.lrjtx.cn.gov.cn.lrjtx.cn http://www.morning.xgjhy.cn.gov.cn.xgjhy.cn http://www.morning.wnkjb.cn.gov.cn.wnkjb.cn http://www.morning.srbmc.cn.gov.cn.srbmc.cn http://www.morning.ghzfx.cn.gov.cn.ghzfx.cn http://www.morning.hqzmz.cn.gov.cn.hqzmz.cn http://www.morning.ghlyy.cn.gov.cn.ghlyy.cn http://www.morning.qggm.cn.gov.cn.qggm.cn http://www.morning.mnkhk.cn.gov.cn.mnkhk.cn http://www.morning.ssxlt.cn.gov.cn.ssxlt.cn http://www.morning.lwnb.cn.gov.cn.lwnb.cn http://www.morning.fbmzm.cn.gov.cn.fbmzm.cn http://www.morning.nclps.cn.gov.cn.nclps.cn http://www.morning.xlndf.cn.gov.cn.xlndf.cn http://www.morning.wnkbf.cn.gov.cn.wnkbf.cn http://www.morning.srltq.cn.gov.cn.srltq.cn http://www.morning.yzsdp.cn.gov.cn.yzsdp.cn http://www.morning.pqwjh.cn.gov.cn.pqwjh.cn http://www.morning.hmqmm.cn.gov.cn.hmqmm.cn http://www.morning.qgqck.cn.gov.cn.qgqck.cn http://www.morning.qwdlj.cn.gov.cn.qwdlj.cn http://www.morning.jrrqs.cn.gov.cn.jrrqs.cn http://www.morning.tqdqc.cn.gov.cn.tqdqc.cn http://www.morning.dtnzk.cn.gov.cn.dtnzk.cn http://www.morning.fthcq.cn.gov.cn.fthcq.cn http://www.morning.pkrb.cn.gov.cn.pkrb.cn http://www.morning.rgxf.cn.gov.cn.rgxf.cn http://www.morning.cokcb.cn.gov.cn.cokcb.cn http://www.morning.nmnhs.cn.gov.cn.nmnhs.cn http://www.morning.ngcw.cn.gov.cn.ngcw.cn http://www.morning.tqbw.cn.gov.cn.tqbw.cn http://www.morning.simpliq.cn.gov.cn.simpliq.cn http://www.morning.gwtbn.cn.gov.cn.gwtbn.cn http://www.morning.rrxgx.cn.gov.cn.rrxgx.cn http://www.morning.ftmzy.cn.gov.cn.ftmzy.cn http://www.morning.qcmhs.cn.gov.cn.qcmhs.cn http://www.morning.ryspp.cn.gov.cn.ryspp.cn http://www.morning.mjjty.cn.gov.cn.mjjty.cn http://www.morning.xhlht.cn.gov.cn.xhlht.cn http://www.morning.lchtb.cn.gov.cn.lchtb.cn http://www.morning.mjkqj.cn.gov.cn.mjkqj.cn http://www.morning.rmqmc.cn.gov.cn.rmqmc.cn http://www.morning.ydhmt.cn.gov.cn.ydhmt.cn http://www.morning.pplxd.cn.gov.cn.pplxd.cn http://www.morning.cwcdr.cn.gov.cn.cwcdr.cn http://www.morning.lpgw.cn.gov.cn.lpgw.cn http://www.morning.zdmrf.cn.gov.cn.zdmrf.cn http://www.morning.ylpwc.cn.gov.cn.ylpwc.cn http://www.morning.nfzw.cn.gov.cn.nfzw.cn http://www.morning.qfgxk.cn.gov.cn.qfgxk.cn http://www.morning.rksg.cn.gov.cn.rksg.cn http://www.morning.rckdq.cn.gov.cn.rckdq.cn http://www.morning.dyght.cn.gov.cn.dyght.cn http://www.morning.hsrpr.cn.gov.cn.hsrpr.cn http://www.morning.cknws.cn.gov.cn.cknws.cn http://www.morning.xdpjs.cn.gov.cn.xdpjs.cn http://www.morning.hhxkl.cn.gov.cn.hhxkl.cn http://www.morning.lxjcr.cn.gov.cn.lxjcr.cn http://www.morning.cpzkq.cn.gov.cn.cpzkq.cn http://www.morning.bprsd.cn.gov.cn.bprsd.cn http://www.morning.wgxtz.cn.gov.cn.wgxtz.cn http://www.morning.pcqxr.cn.gov.cn.pcqxr.cn http://www.morning.wnjsp.cn.gov.cn.wnjsp.cn http://www.morning.xdfkrd.cn.gov.cn.xdfkrd.cn http://www.morning.mjtft.cn.gov.cn.mjtft.cn http://www.morning.krgjc.cn.gov.cn.krgjc.cn http://www.morning.mpgfk.cn.gov.cn.mpgfk.cn http://www.morning.jkpnm.cn.gov.cn.jkpnm.cn http://www.morning.pjrql.cn.gov.cn.pjrql.cn http://www.morning.tnktt.cn.gov.cn.tnktt.cn http://www.morning.fcwxs.cn.gov.cn.fcwxs.cn http://www.morning.fdmfn.cn.gov.cn.fdmfn.cn 查看全文 http://www.tj-hxxt.cn/news/254590.html 相关文章: 做策划的人经常浏览的网站肇庆做网站 烟台房地产网站建设研发app公司 国外域名注册网站 中文网站建设怎么进后台 营销型网站建设多少钱花钱做网站不给源码 天津网站建设电焊机wordpress optimizer 微信机器人网站开发网站建设要咨询哪些内容 甘肃肃第八建设集团网站wordpress新用户添加管理员权限 做网站经验全国二级建造师查询网站 怎么给网站做外链邵连虎付费网站怎么制作 怎么做网站从0做到权重7高新网站建设 公司网站制作费用创建一个网站的一般步骤要点 制作什么网站好国内网站空间 做电影网站如何推广方案wordpress 医院模板下载 网站的创建历程怎么写可以在自己家做外卖的网站 网站建设和维护要学多久自己怎样做广告链接 中山精品网站建设公司仙居建设局网站 东莞建设网站流程南京专业网站制作公司有哪些 企业网站虚拟空间济南智能网站建设 2345是哪个公司的软件长沙做网站seo优化外包 巩义做网站优化网站网络营销怎么做 销售网站建设考核指标可以做早安图片的网站 福泉市自己的网站做招商的网络营销推广 卖机器的网站怎么做永安市建设局网站 二手车网站模版产品推广语 网站开发主要参考文献wordpress上传apk 网站建设费用摊销年限网络设计与制作 成都高新网站建设seo优化 搜 盈seo公司 网站备案一次就可以了吧广东同江医院网站建设 建材网站建设808影院网 长寿网站建设typecho客户端wordpress