RedisConfig,RedissonConfig,ScheduledLockConfig,redid配置,分布式锁配置,基于redis的SchedulerLocks使用
1,redis配置
@Bean(name = “customJedisPool”)
public JedisPool getCustomJedisPool() {
JedisPoolConfig poolConfig = new JedisPoolConfig();
// 这个配置项可以不用显式指定,jedis pool Config默认给的是-1,这里写出来只是为了解释下-1的含义:对连接池中的所有空闲连接进行检查
poolConfig.setNumTestsPerEvictionRun(-1);
// 5分钟
poolConfig.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
// 10分钟
poolConfig.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
return new JedisPool(poolConfig, host, Integer.parseInt(port), connectionTimeout, password);
}
2,RedissonConfig
@Configuration
public class RedissonConfig {
@Value("${spring.redis.host}")
private String host;
@Value("${spring.redis.port}")
private String port;
@Value("${spring.redis.password}")
private String password;@Bean(destroyMethod="shutdown")
public RedissonClient redissonClient() throws IOException {Config config = new Config();SingleServerConfig singleServerConfig = config.useSingleServer().setAddress("redis://"+host+":"+port);if (StringUtils.isNotEmpty(password)) {singleServerConfig.setPassword(password);}System.out.println("redisson: "+config.getTransportMode());return Redisson.create(config);
}
分布式锁的使用
@Resource
private RedissonClient redissonClient;
RLock lock = redissonClient.getLock("锁的名词");try {// 加锁lock.lock();// 业务逻辑} catch (Exception e) {e.printStackTrace();}finally {//释放锁lock.unlock();}
3,避免定时任务在多实例等情况下被执行多次
添加定时任务锁
@Configuration
@EnableScheduling
@EnableSchedulerLock(defaultLockAtMostFor = “PT10M”)
public class ScheduledLockConfig {
@Value(“${spring.profiles}”)
private String env;
@Bean
public LockProvider lockProvider(RedisConnectionFactory connectionFactory) {return new RedisLockProvider(connectionFactory,env);
}
@Bean
public ScheduledLockConfiguration scheduledLockConfiguration(LockProvider lockProvider) {return ScheduledLockConfigurationBuilder.withLockProvider(lockProvider).withPoolSize(10).withDefaultLockAtMostFor(Duration.ofMinutes(10)).build();
}
}
定时任务使用
@Scheduled(cron = "0/10 * * * * ?")
@SchedulerLock(name = "equipment_num_lock", lockAtLeastForString = "PT20S", lockAtMostForString = "PT1M")
public void checkEquipmentNumTasks() {// 业务逻辑
}
@SchedulerLock
配置redis 的时候注意格式 不然host会默认连接localhost
注意jedis 的配置格式
spring:
profiles: prod
redis:
host:
port: 6379
password:
connectTimeout: 2000
soTimeout: 2000
jedis:
pool:
max-idle: 30
min-idle: 20
max-wait: -1
max-active: 30
minEvictableIdleTimeMillis: 600000
time-between-eviction-runs: 300000
RedisConfig,RedissonConfig,ScheduledLockConfig,redid配置,分布式锁配置,基于redis的SchedulerLocks使用相关推荐
- 分布式锁(基于redis和zookeeper)详解
分布式锁(基于redis和zookeeper)详解 https://blog.csdn.net/a15835774652/article/details/81775044 为什么写这篇文章? 目前网上 ...
- php使用redis分布式锁,php基于redis的分布式锁实例详解
在使用分布式锁进行互斥资源访问时候,我们很多方案是采用redis的实现. 固然,redis的单节点锁在极端情况也是有问题的,假设你的业务允许偶尔的失效,使用单节点的redis锁方案就足够了,简单而且效 ...
- ZooKeeper(三) 什么是分布式锁以及使用Redis手写实现
一.什么是分布式锁? 分布式锁是相对于单体单机应用而言的一种锁机制.在单机应用时由于共享一个jvm,可以使用同一个java Lock对象进行获取锁,解锁操作.当为分布式集群时存在跨机器请求执行,无法共 ...
- 分布式锁实现:Redis
前言 单机环境下我们可以通过JAVA的Synchronized和Lock来实现进程内部的锁,但是随着分布式应用和集群环境的出现,系统资源的竞争从单进程多线程的竞争变成了多进程的竞争,这时候就需要分布式 ...
- zookeeper 分布式锁_关于redis分布式锁,zookeeper分布式锁原理的一些学习与思考
编辑:业余草来源:https://www.xttblog.com/?p=4946 首先分布式锁和我们平常讲到的锁原理基本一样,目的就是确保,在多个线程并发时,只有一个线程在同一刻操作这个业务或者说方法 ...
- python redis分布式锁_Python 使用 Redis 实现分布式锁
前言 随着互联网技术的不断发展,用户量的不断增加,越来越多的业务场景需要用到分布式系统.而在分布式系统中访问共享资源就需要一种互斥机制,来防止彼此之间的互相干扰,以保证一致性,这个时候就需要使用分布式 ...
- 阿里面试官:分布式锁到底用Redis好?还是Zookeeper好?
首先,分布式锁和我们平常讲到的锁原理基本一样,目的就是确保,在多个线程并发时,只有一个线程在同一刻操作这个业务或者说方法.变量. 在一个进程中,也就是一个jvm 或者说应用中,我们很容易去处理控制,在 ...
- 数据结构(字典,跳跃表)、使用场景(计数器、缓存、查找表、消息队列、会话缓存、分布式锁)、Redis 与 Memcached、 键的过期时间、数据淘汰策略、持久化(RDB、AOF)
1. 数据结构 1.1 字典 dictht 是一个散列表结构,使用拉链法保存哈希冲突的 dictEntry /* This is our hash table structure. Every dic ...
- Mysql学习总结(83)——常用的几种分布式锁:ZK分布式锁、Redis分布式锁、数据库分布式锁、基于JDK的分布式锁方案对比总结
一.基于数据库实现分布式锁 1.1.悲观锁 利用select - where - for update 排他锁.注意: 其他附加功能与实现一基本一致,这里需要注意的是"where name= ...
最新文章
- 如何将Numpy加速700倍?用 CuPy 呀
- 网站外链如何发布才能更快的得到高排名呢?
- TCP的那些事(转载)
- 计算机基础知识关于进制,计算机基础知识-- 进制和编码
- Linux并发与竞争实验(一次只允许一个应用程序操作LED灯)
- Helpdesk 流程
- Node出错导致运行崩溃的解决方案
- 分时系统是计算机网络嘛,简述计算机网络与分时多用户系统多机系统分布式系统的区别...
- stcc52单片机时钟电路_单片机与晶振到底有什么关系?
- thinkphp-volist4
- 智能优化算法:海洋捕食者算法
- Hcse 交换知识点-1
- excel合并两列内容_excel新手问题:怎么把两列数据合并到一起?用这个公式
- R - 小鑫の日常系列故事(七)——小纸条
- 不积跬步无以至千里010
- 关于转换JSON列表错误导致结果出错的问题
- python列表对应元素相乘_在python中,将两个列表中的每个元素相乘
- 解决标题党的计算机算法用户app,今日头条算法工程师:做好推荐必须打击标题党...
- 陆军、海军、空军、雷军!
- Codeforces - Good Bye 2020