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

Redis 整合中 Redisson 的使用

大家好 , 我是苏麟 , 今天带来 Redisson 使用 .

官方文档 :  GitHub - redisson/redisson: Redisson - Easy Redis Java client with features of In-Memory Data Grid. Sync/Async/RxJava/Reactive API. Over 50 Redis based Java objects and services: Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Bloom filter, Spring Cache, Tomcat, Scheduler, JCache API, Hibernate, RPC, local cache ...

 

引入依赖

        <!--https://github.com/redisson/redisson#quick-start--><dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.23.2</version></dependency>

 yml配置(例如)

  #redis 配置redis:port: 6379database: 1host: localhost

Redisson配置

@Data
@Configuration
@ConfigurationProperties(prefix = "spring.redis")
public class RedissonConfig {private String host;private String port;@Beanpublic RedissonClient redissonClient(){// 1.创建配置Config config = new Config();String redissonAddress = String.format("redis:/%s:%s",host,port);//useClusterServers()集群//setDatabase() 设置那个redis库config.useSingleServer().setAddress(redissonAddress).setDatabase(2);//2.创建实例RedissonClient redissonClient = Redisson.create(config);return  redissonClient;}
}

 这里@ConfigurationProperties(prefix = "spring.redis")用法请看 : 读取/加载 properties/yml 配置文件_踏遍三十六岸的博客-CSDN博客


像操作本地集合一样操作Redisson


@SpringBootTest
class UserCenterApplicationTests {@Resourceprivate RedissonClient redissonClient;@Testvoid test() {//list操作 数据存在 JVM 内存中List<String> list = new ArrayList<>();list.add("sl");System.out.println(list.get(0));list.remove(0);//数据存在 Redis 内存中//getList()取列表名字 因为 redis 中是 key-value 存在RList<String> rList = redissonClient.getList("redisson-list");rList.add("sl-redisson");System.out.println(rList.get(0));rList.remove(0);    }@Testvoid hashTest(){//哈希操作RMap<String, String> rMap = redissonClient.getMap("LiJiaWei");//设置 map 中的 key - valuerMap.put("sl","1");rMap.put("jw","2");System.out.println(redissonClient.getMap("LiJiaWei").get("sl"));System.out.println(redissonClient.getMap("LiJiaWei").get("jw"));redissonClient.getMap("LiJiaWei").remove("sl");redissonClient.getMap("LiJiaWei").remove("jw");}//......//其他操作都一样
}

Redssion 分布式锁

定时任务可以看(或者其他的) :  Spring Schedular 定时任务_踏遍三十六岸的博客-CSDN博客

@Component
public class PreScheduled {@Resourceprivate RedissonClient redissonClient;/*** 每天执行*/@Scheduled(cron = "0 59 23 * * *")public void doCah() {//获取锁 , 可重入  指定锁的名称RLock lock = redissonClient.getLock("sl:redisson:cache:lock");try {/*** 只有一个线程获取到锁* 等待时间 , 执行时间 , 毫秒*/if (lock.tryLock(0, 30000L, TimeUnit.MILLISECONDS)) {//...}} catch (InterruptedException e) {e.printStackTrace();} finally {/*** 只能释放自己加的锁*/if (lock.isHeldByCurrentThread()) {lock.unlock();}}}
}

感兴趣的小伙伴可以自行了解下面知识!

Redisson的可重入锁原理

Redisson看门狗WatchDog机制

Redisson的multiLock原理


这期就到这里 , 拜拜 !

http://www.lryc.cn/news/140704.html

相关文章:

  • 数据结构(5)
  • R语言实现网状Meta分析(1)
  • Reactor 第十篇 定制一个生产的WebClient
  • 桃子叶片病害识别(Python代码,pyTorch框架,深度卷积网络模型,很容易替换为其它模型,带有GUI识别界面)
  • matlab使用教程(21)—求函数最值
  • Redis中 为什么Lua脚本可以保证原子性?
  • tda4 videnc-test-app: CONTINUOUS and STEPWISE FRAMEINTERVALS not supported
  • [已解决] libGL error: MESA-LOADER: failed to open swrast
  • JVM及垃圾回收机制
  • windows11不允许安装winpcap4.1.3
  • matlab使用教程(23)—优化函数的参数
  • 基于“互联网+ 服务供应链”的汽车道路救援系统对策分析
  • 浅谈泛在电力物联网在电力设备状态在线监测中的应用
  • 低通滤波器和高通滤波器
  • VS中插入Qt插件后配置项目笔记
  • Hugo·Stack主题·使用及修改
  • 实战:大数据Spark简介与docker-compose搭建独立集群
  • 嵌入性视角下的企业集成创新网络演化过程
  • 回归预测 | MATLAB实现FA-ELM萤火虫算法优化极限学习机多输入单输出回归预测(多指标,多图)
  • 数据结构数组栈的实现
  • 成集云 | 抖店连接器客户静默下单催付数据同步钉钉 | 解决方案
  • 【算法专题突破】双指针 - 复写零(2)
  • 【Java从0到1学习】11 Java集合框架
  • uniapp使用uni.chooseLocation()打开地图选择位置
  • 学习笔记|课后练习解答|电磁炉LED实战|逻辑运算|STC32G单片机视频开发教程(冲哥)|第八集(下):课后练习分析与解答
  • 前端高频面试题 js中堆和栈的区别和浏览器的垃圾回收机制
  • 自然语言处理:大语言模型入门介绍
  • 使用秘籍|如何实现图数据库 NebulaGraph 的高效建模、快速导入、性能优化
  • 对于pycharm 运行的时候不在cmd中运行,而是在python控制台运行的情况,如何处理?
  • Spring MVC 二 :基于xml配置