日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

SpringBoot集成redis實現分布式鎖的示例代碼

瀏覽:30日期:2023-03-28 18:13:28
1、準備

使用redis實現分布式鎖,需要用的setnx(),所以需要集成Jedis

需要引入jar,jar最好和redis的jar版本對應上,不然會出現版本沖突,使用的時候會報異常redis.clients.jedis.Jedis.set(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;

我使用的redis版本是2.3.0,Jedis使用的是3.3.0

<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.3.0</version> </dependency>2、配置參數

spring: redis: host: localhost port: 6379 password: root timeout: 5000 # Redis數據庫索引(默認為0) database: 0 # 連接池最大連接數(使用負值表示沒有限制) jedis: pool: # 連接池最大連接數(使用負值表示沒有限制) max-active: 8 # 連接池最大阻塞等待時間(使用負值表示沒有限制) max-wait: -1 # 連接池中的最大空閑連接 max-idle: 8 # 連接池中的最小空閑連接 min-idle: 0 # 獲取連接時檢測是否可用 testOnBorrow: true3、配置JedisPool

import lombok.extern.slf4j.Slf4j;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig; /** * Jedis配置項 * @autho ConnorSong * @date 2021/1/21 9:55 上午 */@Configuration@Slf4jpublic class JedisPoolCinfigration { @Bean public JedisPoolConfig jedisPoolConfig(@Value('${spring.redis.jedis.pool.max-active}') int maxActive, @Value('${spring.redis.jedis.pool.max-idle}') int maxIdle, @Value('${spring.redis.jedis.pool.min-idle}') int minIdle, @Value('${spring.redis.jedis.pool.max-wait}') long maxWaitMillis, @Value('${spring.redis.jedis.pool.testOnBorrow}') boolean testOnBorrow) { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxTotal(maxActive); jedisPoolConfig.setMaxIdle(maxIdle); jedisPoolConfig.setMinIdle(minIdle); jedisPoolConfig.setMaxWaitMillis(maxWaitMillis); jedisPoolConfig.setTestOnBorrow(testOnBorrow); return jedisPoolConfig; } @Bean public JedisPool jedisPool(@Value('${spring.redis.host}') String host,@Value('${spring.redis.password}') String password,@Value('${spring.redis.port}') int port,@Value('${spring.redis.timeout}') int timeout, JedisPoolConfig jedisPoolConfig) { log.info('=====創建JedisPool連接池====='); if (StringUtils.isNotEmpty(password)) { return new JedisPool(jedisPoolConfig, host, port, timeout, password); } return new JedisPool(jedisPoolConfig, host, port, timeout); }}4、分布式鎖工具類

import lombok.extern.slf4j.Slf4j;import redis.clients.jedis.Jedis;import redis.clients.jedis.params.SetParams; import java.util.Collections; /** * jedis分布式鎖工具類 * @autho ConnorSong * @date 2021/1/20 6:26 下午 */@Slf4jpublic class JedisLockUtils { private static final String LOCK_SUCCESS = 'OK'; private static final Long RELEASE_SUCCESS = 1L; /** * 嘗試獲取分布式鎖 * @param jedis Redis客戶端 * @param lockKey 鎖 * @param lockValue value * @param expireTime 超期時間(秒) * @return 是否獲取成功 */ public static boolean tryGetLock(Jedis jedis, String lockKey, String lockValue, int expireTime) { log.info('----獲取Jedis分布式鎖----lockKey:{}', lockKey); try { //方案一,具有原子性,并且可以設置過期時間,避免拿到鎖后,業務代碼出現異常,無法釋放鎖 String result = jedis.set(lockKey, lockValue, new SetParams().nx().ex(expireTime)); if (LOCK_SUCCESS.equals(result)) {return true; } return false; //方案二,setnx()具有原子性,但是有后續判斷,整體不具有原子性,不能設置過期時間// //setnx(lockkey, 當前時間+過期超時時間),如果返回 1,則獲取鎖成功;如果返回 0 則沒有獲取到鎖// String value = new Date().getTime() + expireTime + '';// if(1 == jedis.setnx(lockKey, value)){//return true;// }else{//String oldExpireTime = jedis.get(lockKey);//if(Long.valueOf(oldExpireTime)< new Date().getTime()){// //鎖超時,可以獲取鎖重新設置鎖// //計算 newExpireTime = 當前時間+過期超時時間,然后 getset(lockkey, newExpireTime) 會返回當前 lockkey的值currentExpireTime// long newExpireTime = new Date().getTime() + expireTime;// String currentExpireTime = jedis.getSet(lockKey, newExpireTime + '');// if(currentExpireTime.equals(oldExpireTime)){// return true;// }//}//return false;// } }finally { returnResource(jedis); } } /** * 釋放分布式鎖 * @param jedis Redis客戶端 * @param lockKey 鎖 * @return 是否釋放成功 */ public static boolean closeLock(Jedis jedis, String lockKey, String lockValue) { log.info('----釋放Jedis分布式鎖----lockKey:{}, lockValue:{}', lockKey, lockValue); try { String script = 'if redis.call(’get’, KEYS[1]) == ARGV[1] then return redis.call(’del’, KEYS[1]) else return 0 end'; Object result = jedis.eval(script, Collections.singletonList(lockKey), Collections.singletonList(lockValue)); if (RELEASE_SUCCESS.equals(result)) {return true; } return false; }finally { returnResource(jedis); } } /** * 關閉資源 * @param jedis */ public static void returnResource(final Jedis jedis){ if(null != jedis){ jedis.close(); } }}

到此這篇關于SpringBoot集成redis實現分布式鎖的示例代碼的文章就介紹到這了,更多相關SpringBoot redis分布式鎖內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲精品免费观看| 国产视频一区欧美| 日本色综合中文字幕| 7777精品| 日韩欧美久久| 久久精品av麻豆的观看方式| 日本天堂一区| 国产极品嫩模在线观看91精品| 欧美日本久久| 精品中国亚洲| 在线天堂资源www在线污| 久久国产直播| 伊人精品在线| 日本va欧美va瓶| 国产欧美日韩一区二区三区四区 | www成人在线视频| 日韩免费久久| 激情欧美一区| 久久亚洲一区| 国产亚洲第一伦理第一区| 久久99视频| 天堂av在线| 欧美日韩三区| 69堂精品视频在线播放| 乱一区二区av| 亚洲天堂一区二区| 亚洲一区二区免费看| 日韩精品欧美大片| 美女免费视频一区| 99久久久久| 亚洲ww精品| 国产精品中文字幕亚洲欧美 | 日韩不卡在线| 免费国产亚洲视频| 国产精品videossex久久发布| 日韩精品dvd| 亚洲一区av| 欧美极品中文字幕| 亚洲成人国产| 日韩精品a在线观看91| 国内精品麻豆美女在线播放视频| 91精品推荐| 午夜精品福利影院| 国产aⅴ精品一区二区三区久久| 欧美天堂视频| 在线观看亚洲精品福利片| 丰满少妇一区| 日韩在线一区二区| 中文字幕成在线观看| 亚洲麻豆一区| 日韩在线免费| 国产亚洲欧美日韩精品一区二区三区| 日韩福利一区| 日韩久久一区| 日韩精品一区二区三区免费观影| 亚洲另类黄色| 成人羞羞视频播放网站| 欧美天堂在线| 九九久久婷婷| 国产日韩欧美一区二区三区在线观看 | 日韩三级一区| 日韩一区二区三区免费播放| 婷婷综合成人| 久久精品中文| 国产日韩欧美三区| 国产精品呻吟| av中文资源在线资源免费观看| 免费视频一区二区| 日本蜜桃在线观看视频| 亚洲精品影视| 深夜视频一区二区| 欧美激情亚洲| 亚洲午夜免费| 久久久精品日韩| 国产高清视频一区二区| 免费视频一区二区| 亚洲午夜av| 精品视频91| 日韩一区二区三区四区五区| 91精品国产福利在线观看麻豆| 麻豆久久久久久| 中文一区一区三区免费在线观| 日韩高清中文字幕一区二区| 欧美国产专区| 日韩激情视频网站| 免播放器亚洲| 欧美肉体xxxx裸体137大胆| 精品久久免费| 国产精品扒开腿做爽爽爽软件| 在线观看视频免费一区二区三区| 国产精品97| 久久视频国产| 天堂中文av在线资源库| 精品一二三区| 国产精品巨作av| 欧美自拍一区| 亚洲精品乱码日韩| 蜜臀av国产精品久久久久 | 欧美日韩国产高清| 日韩欧美一区二区三区免费观看| 久久福利在线| 欧美日韩中出| 日韩和欧美的一区| 亚洲精品一二三**| 亚洲一区成人| 亚洲欧美日本国产专区一区| 精品在线播放| 美女毛片一区二区三区四区| 久久国产毛片| 99精品美女| 日本少妇一区| 日本在线精品| 午夜av成人| 免费看av不卡| 精品免费av在线| 三上悠亚国产精品一区二区三区| 日本精品黄色| 欧美三级精品| 久久久水蜜桃av免费网站| 亚洲成人va| 国产一在线精品一区在线观看| 在线成人动漫av| 好看不卡的中文字幕| 国产农村妇女精品一二区| 另类亚洲自拍| 午夜亚洲福利| 国产精品亚洲欧美日韩一区在线| 国产精品2区| 蜜桃精品视频| 亚洲最新无码中文字幕久久| 伊人久久一区| 国产欧美激情| 精品日韩在线| 蜜臀久久精品| 好看不卡的中文字幕| 一二三区精品| 国产亚洲在线观看| 亚洲精品动态| 国产精品久久国产愉拍| 国产一区二区三区不卡av| 国产高潮在线| 欧美福利专区| 中文字幕亚洲精品乱码| 日韩黄色免费网站| 免费视频一区二区三区在线观看| 国产黄大片在线观看| 欧美亚洲激情| 在线国产精品一区| 国产亚洲精品美女久久| 国产精品99视频| 国户精品久久久久久久久久久不卡| 国产精品呻吟| 欧美精品国产| 日韩在线看片| 日韩专区欧美专区| 欧美日本不卡高清| 色婷婷综合网| 国产精品日韩欧美一区| 天堂精品久久久久| 免费日韩一区二区三区| 91精品国产成人观看| 中文视频一区| 久久亚洲精精品中文字幕| 久久精品播放| 日韩不卡手机在线v区| 日韩88av| 蜜桃视频在线观看一区| 欧美黑人巨大videos精品| 99国产精品免费视频观看| 亚洲精品自拍| 新版的欧美在线视频| 日韩综合小视频| 欧美激情另类| 亚洲一区黄色| 精品精品久久| 亚洲天堂av资源在线观看| 成人精品视频| 亚洲精品一二三**| 精精国产xxxx视频在线野外| 日本不卡高清| 精精国产xxxx视频在线野外| 亚洲精品九九| 久久精品国语| 国产精品一级在线观看| 2023国产精品久久久精品双| 国产精品亚洲综合色区韩国| 欧美 日韩 国产精品免费观看| 欧美色综合网| 久久精品国产大片免费观看| 国产精品亚洲综合久久| 伊人久久大香线蕉av超碰演员| 麻豆精品久久| 欧美日韩日本国产亚洲在线| 精品免费av| 日韩欧美久久| 欧美日韩中文一区二区| 国产精品一区二区精品| 久久不射中文字幕| 日韩成人综合| 国产精品www.|