首页 > 数据库 >模拟redis的setIfAbsent

模拟redis的setIfAbsent

时间:2024-05-22 15:12:40浏览次数:14  
标签:set key redis setIfAbsent duplicate isMember data 模拟

一、导入依赖

<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>2.6.2</version>
</dependency>

 

二、缓存类

public class CustomCache<K, V> {

private Cache<K, V> cache;

public CustomCache() {
this.cache = Caffeine.newBuilder()
.expireAfterWrite(120, TimeUnit.SECONDS)
.build();
}

public Boolean setIfAbsent(K key, V value) {
return cache.asMap().putIfAbsent(key, value) == null;
}
}

三、调用
  public boolean isMember(String duplicate_data_set_key, String data) {
  Boolean isMember = true;
   if (customCache.setIfAbsent(SIXTY_SEC_DUPLICATE_DATA_PREFIX_KEY + duplicate_data_set_key,
   duplicate_data_set_key)) {
   isMember = false;
   log.info("二分钟有效期警情数据:duplicate_data_set_key:{} data:{}", duplicate_data_set_key, data);
   }
  log.info(" 线程:{} redis是否存在 {} ", Thread.currentThread().getName(), isMember);
   // 判断数据是否存在于Set中
   return isMember != null && isMember;
  }

标签:set,key,redis,setIfAbsent,duplicate,isMember,data,模拟
From: https://www.cnblogs.com/liaoenqi/p/18206263

相关文章

  • 【EasyClick】MacOS连接MuMu模拟器
    一、打开模拟器,IDE中操作:设备连接-USB连接 二、提示 未发现任何设备,打开运行日志查看 三、命令行启动,进入adb目录下启动服务 四、重新操作第一步,连接成功! ......
  • 模拟值处理-base on simatic
    1.模拟量有哪些温度压力速度填充量PH值2.变送器对于PLC而言,只能处理位模式格式的模拟值(-32767~32767)。所以变送器的目的是测量如压力流量温度等物理值,再转换成电流/电压/电阻等形式,方便模拟量输入模块采集,采集后再模块内部有一个AD(模数)转换器,可以把电流电压电阻值变成1......
  • Redis 笔记
    1.什么是redisredis是高性能缓存数据库,基于内存运行key-value存储系统,提供分布式锁,支持事务,持久化,多种分布式集群方案。使用单线程的多路IO服用模型。redis支持数据类型String,Hash,List,Set,SortedSet等String存储字符串,Hash存储key-value键值对集合List字符串链表......
  • 小小Redis数据删除策略,拿捏
    Redis的删除策略水一篇Redis是一种内存级数据库,所有数据均存放在内存中,内存中的数据可以通过TTL指令获取其状态TTL返回的值有三种情况:正数,-1,-2正数:代表该数据在内存中还能存活的时间-1:永久有效的数据-2:已经过期的数据或被删除的数据或未定义的数据删除策略就是针......
  • 推荐一款模拟浏览器自动化操作神器!Mechanize
    大家好,我是狂师!今天给大家推荐一款用于模拟浏览器行为以进行网页自动化操作Python库:Mechanize。1、介绍Mechanize是Python中的一个库,它被设计用来自动化网页浏览和数据提取任务。通过模拟真实浏览器的行为,如填写表单、点击链接、处理Cookie等,Mechanize使得开发者可以用脚本来......
  • spring boot集成redis
    Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sortedset--有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add......
  • 一次redis和内存的qps比较
    不同缓存策略下的性能指标:无缓存|Redis|直接内存1.无缓存测试结果2.加入Redis缓存后性能翻倍6-73.直接用内存(错误写法)错误写法的性能指标正确写法(双检单例模式)正确写法后,性能......
  • 模拟考试
    模拟考试注意,以下答案仅供参考‍1、某CentOS系统空间不够,现加一块100G的硬盘(是系统的第二块硬盘),分为一个区99G,挂载点是/data,请写出从分区到挂载并使用的整个步骤及相关命令。1.创建分区:sudofdisk/dev/sdb22.在fdisk的交互式界面中,执行以下步骤:输入n创建新分区。选择p......
  • 如何模拟HTTP请求并验证功能
    要模拟HTTP请求并验证功能,你可以使用SpringBoot提供的MockMvc工具,它允许我们在没有实际启动HTTP服务器的情况下测试SpringMVC控制器。以下是一个使用MockMvc进行HTTP请求模拟和验证的示例:importorg.junit.jupiter.api.BeforeEach;importorg.junit.jupiter.api.Test;imp......
  • 让redis集成到django的库--django-redis
    安装pipinstalldjango-redis配置作为cachebackend使用配置为了使用django-redis,你应该将你的djangocachesetting改成这样:CACHES={"default":{"BACKEND":"django_redis.cache.RedisCache","LOCATION":"r......