springboot redis分布式鎖代碼實(shí)例
這篇文章主要介紹了springboot redis分布式鎖代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
隨著微服務(wù)等分布式架構(gòu)的快速發(fā)展及應(yīng)用,在很多情況下,我們都會(huì)遇到在并發(fā)情況下多個(gè)線程競(jìng)爭(zhēng)資源的情況,比如我們耳熟能詳?shù)拿霘⒒顒?dòng),多平臺(tái)多用戶對(duì)同一個(gè)資源進(jìn)行操作等場(chǎng)景等。分布式鎖的實(shí)現(xiàn)方式有很多種,比如基于數(shù)據(jù)庫、Zookeeper、Redis等,本文我們主要介紹Spring Boot整合Redis實(shí)現(xiàn)分布式鎖。
工具類如下:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.stereotype.Component;
import redis.clients.jedis.Protocol;
import redis.clients.util.SafeEncoder;
import java.io.Serializable;
@Component
public class RedisUtils {
@Autowired
private RedisTemplate redisTemplate;
public RedisTemplate getRedisTemplate() {
return this.redisTemplate;
}
/**
* 設(shè)置redis分布式鎖
* @param key
* @param value
* @param expire 鎖過期時(shí)間
* @return
*/
public boolean tryLock(final String key, final Serializable value, final long expire){
boolean isSuccess = (boolean) redisTemplate.execute((RedisCallback) connection -> {
RedisSerializer valueSerializer = redisTemplate.getValueSerializer();
RedisSerializer keySerializer = redisTemplate.getKeySerializer();
Object object = connection.execute("set",keySerializer.serialize(key),valueSerializer.serialize(value), SafeEncoder.encode("NX"),SafeEncoder.encode("EX"), Protocol.toByteArray(expire));
return null != object;
});
return isSuccess;
}
//釋放鎖
public boolean releaseLock(String key){
return redisTemplate.delete(key);
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- SpringBoot整合Redis正確的實(shí)現(xiàn)分布式鎖的示例代碼
- SpringBoot使用Redis實(shí)現(xiàn)分布式鎖
- SpringBoot中使用redis做分布式鎖的方法
- SpringBoot之使用Redis實(shí)現(xiàn)分布式鎖(秒殺系統(tǒng))
- 基于springboot實(shí)現(xiàn)redis分布式鎖的方法
- 關(guān)于SpringBoot 使用 Redis 分布式鎖解決并發(fā)問題
- SpringBoot集成redis實(shí)現(xiàn)分布式鎖的示例代碼
- SpringBoot利用注解來實(shí)現(xiàn)Redis分布式鎖
- Springboot中如何使用Redisson實(shí)現(xiàn)分布式鎖淺析
- 基于SpringBoot+Redis實(shí)現(xiàn)分布式鎖
相關(guān)文章
Java攔截器Interceptor和過濾器Filte的執(zhí)行順序和區(qū)別
本文主要介紹了Java攔截器Interceptor和過濾器Filte的執(zhí)行順序和區(qū)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
sftp和ftp 根據(jù)配置遠(yuǎn)程服務(wù)器地址下載文件到當(dāng)前服務(wù)
這篇文章主要介紹了sftp和ftp 根據(jù)配置遠(yuǎn)程服務(wù)器地址下載文件到當(dāng)前服務(wù)的相關(guān)資料本文給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-10-10
Spring Data JPA 復(fù)雜/多條件組合分頁查詢
本文主要介紹了Spring Data JPA 復(fù)雜/多條件組合分頁查詢的相關(guān)資料。具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-04-04
Mybatis-Plus?sum聚合函數(shù)及按日期查詢并求和的方式詳解
這篇文章主要介紹了Mybatis-Plus sum聚合函數(shù)及按日期查詢并求和,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06
Spring Cloud Feign性能優(yōu)化代碼實(shí)例
這篇文章主要介紹了Spring Cloud Feign性能優(yōu)化代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03

