首页 > 数据库 >redis锁等待随机毫秒数拦截和程序自动过期双重机制

redis锁等待随机毫秒数拦截和程序自动过期双重机制

时间:2024-11-27 22:22:31浏览次数:7  
标签:hasKey 过期 time redis long 毫秒 startTime LocalDateTime endTime

redis锁等待随机毫秒数拦截和程序自动过期双重机制

上一个操作加了锁,需要等待上一个操作执行完毕之后,才允许当前操作执行,所以当前操作需要执行锁等待处理。

 

package com.example.core.mydemo.javaDemo;

import java.time.LocalDateTime;

public class RandomTest {
    public static void main(String[] args) {
        //1秒以内的随机毫秒数
        for (int i = 0; i < 10;i++) {
            long time = (long) (Math.random() * 1000);
            System.out.println("time=" + time);
        }

//        String redisKey = "myKey:" + dto.getOrdernumber();
//        Boolean haskey = stringRedisTemplate.hasKey(redisKey);
        Boolean hasKey = true;

        LocalDateTime startTime = LocalDateTime.now();
        LocalDateTime endTime = startTime.plusSeconds(5);

            //已被锁定,直接返回,等待
            while (hasKey && (startTime.isBefore(endTime) || startTime.isEqual(endTime)) ) {
                try {
                    long time = (long) (Math.random() * 1000);
                    Thread.sleep(time);
                    //重新查询
//                    haskey = stringRedisTemplate.hasKey(redisKey);
                    //重新刷新时间
                    startTime = LocalDateTime.now();
//                    log.info("判断锁存在,orderNo=[{}],haskey=[{}],waitTime=[{}]",dto.getOrdernumber(),haskey,time);
                    System.out.println("waitTime="+time+",startTime="+startTime+",endTime="+endTime);

                } catch (InterruptedException e) {
//                    log.error("exceotion:",e);
                    e.printStackTrace();
                }
            }

    }
}

 

标签:hasKey,过期,time,redis,long,毫秒,startTime,LocalDateTime,endTime
From: https://www.cnblogs.com/oktokeep/p/18573218

相关文章

  • redis锁和等待锁随机毫秒数解决程序调用方控制执行的先后顺序,避免并发操作造成的数据
    redis锁和等待锁随机毫秒数解决程序调用方控制执行的先后顺序,避免并发操作造成的数据不一致现象:向第三方服务调用接口,比如更换商品换货,需要先取消,然后再新增操作。同时可能存在修改并发操作(同时操作换货和修改操作),在取消和新增的间隙中做了修改操作,引起脏数据等数据不一致的问题......
  • mongodb/redis/neo4j 如何自己打造一个 web 数据库可视化客户端?
    随笔从千万粉丝“何同学”抄袭开源项目说起,为何纯技术死路一条?数据源的统一与拆分监控报警系统的指标、规则与执行闭环我们的系统应该配置哪些监控报警项?监控报警系统如何实现自监控?java老矣,尚能饭否?一骑红尘妃子笑,无人知是荔枝来!张居正的考成法,对我们有何参考价值?mon......
  • Redis基础配置
    文章目录Redis配置......
  • 数据库(总结自小林coding)|索引失效的场景、慢查询、原因及如何优化?undo log、redo log
    数据库(总结自小林coding)|索引失效的场景、慢查询、原因及如何优化?undolog、redolog、binlog作用、MySQL和Redis的区别说一下索引失效的场景?什么是慢查询?原因是什么?可以怎么优化?undolog、redolog、binlog有什么用MySQL和Redis的区别是什么说一下索引失效的场景......
  • Redis LRU算法和LFU算法
    Redis的近似LRU和LFU算法基本概念Least:最小、最少LRU(LeastRecentlyUsed)全称是最近最少使用LFU全称是最少使用算法(LeastFrequentlyUsed:使用频率最少)标准LRU算法实现原理:使用链表存储元素并按照一定的顺序进行排列。当空间满的时候,会踢掉链表尾部的元素。当某个元......
  • Redis 持久化方式 AOF RDB
    持久化方式AOF将每一个收到的写命令追加到AOF文件中,属于追加写。通俗的理解就是日志记录特性日志内容记录写命令,类似于mysqlbinlog的statement格式。每当有一个写命令过来时,就直接保存在AOF文件中重写机制为什么有重写机制:由于AOF持久化是Redis不断将写命令记录到AOF......
  • Windows上可用的Redis安装包
    Redis官方不提供Windows版本的安装包(可能的原因是Windows没有epoll,会导致Redis性能下降)。但是在我们自己的开发电脑上,有时希望有个本地Redis,GitHub上有大佬提供了适用于Windows的安装包,不需要虚拟机,不需要docker,直接可以使用。https://github.com/tporadowski/redis虽然是5.0......
  • redis小细节
    redis的set指令默认按照字符串存储,所以可以不加双引号,但是如果设置的字符串中间有空格则需要加双引号k已经存在,会发生覆盖append的k不存在相当于set一个k在方法后加nx大多数指按照原子性进行操作Getrange方法不支持回绕操作,即start必须大于end比如getrangek1-1-3就......
  • Redis 在实际业务中的高效应用
    文章目录Redis在实际业务中的高效应用实时聊天系统的实现延迟队列解决任务延时问题全局唯一ID生成缓存预热与高并发防护实时排行榜的实现数据监控与指标统计轻量级分布式锁用户行为追踪与分析短链接与映射服务地理位置查询与计算事务与批量操作分布式数据共享中心消息......
  • java操作邮箱 - 邮箱发送验证码 -redis分布式缓存 -redisson分布式缓存
    初次发布于我的个人文档参考:java操作163邮箱本文以163邮箱为例,介绍如何用java发送邮箱。1.获取邮箱授权码进入163邮箱-设置-POP3/SMTP/IMAP-开启POP3/SMTP服务记录得到的授权码2.安装依赖//https://mvnrepository.com/artifact/jakarta.activation/jakarta.activation-ap......