好久沒來部落格了,遇到了一些好東西分享給大家,不喜勿噴!
redisson是基於redis 的一種開源框架,該框架是為了方便我們使用redis而再度封裝的乙個框架。也不多做介紹了。
官方文件連線:
在我們專案中,它來幹什麼呢?我想到是結合aop和自定義註解實現redis的分布式鎖控制,使我們的加鎖解鎖得以統一控制。接下來期待下吧!上**。
pom如下:
org.redisson
redisson
3.11.6
首先需要我們在容器中注入redisclient。我們的redisconfig配置類如下
/**
* 啟動程式的時候來初始化這個類
@propertysource 載入指定配置檔案
*/@configuration
@propertysource("classpath:config/redis.properties")
public class redisconfig ")
private string master_host;
//#埠號
@value("$")
private integer port;
// 密碼
@value("$")
private string password;
//最大空閒數
@value("$")
private integer maxidle;
public redisconfig()
@bean(name = "redisclient")
public redissonclient redisclient()
}
接下來使我們的自定義註解 :
/**
* 自定義分布式鎖註解 配合 aop + redisson 實現分布式鎖
*/@target()
@retention(retentionpolicy.runtime)
@documented
public @inte***ce redisdistlock
aop實現如下:
/**
* redis分布式鎖 切面處理
* aop 切面處理 redisson分布式加鎖操作
* * @author chenhengtong
*/@aspect
@component("admincenterredisdistlockaspect")
@log4j
@order(-1)
public class redisdistlockaspect
@around("redissonlockaspect()")
public object lockaround(proceedingjoinpoint proceedingjoinpoint) throws throwable finally
log.info("鎖釋放完成");
} catch (exception e)
string methodname = method.getname();
log.info(">> " + methodname + " cost " + (system.currenttimemillis() - start) + " ms");}}
/*** 獲取切入點的方法
** @param joinpoint
* @return
*/private method getpointmethod(joinpoint joinpoint)
/*** 通過方法引數獲取車隊序列號的值
** @param joinpoint
* @return
*/private string getteamsequence(joinpoint joinpoint)
if (!stringutils.isempty(parametervalues)) else if (param.equalsignorecase(parameternames[i])) else
teamsequence = lockname + separator + teamsequence;
break;}}
if (!stringutils.isempty(teamsequence))
}throw new runtimeexception("鎖id為空");
}/**
* 反射獲取 註解制定的引數
** @param param 方法上的引數物件
* @return
*/private string reflectteamsequence(object param, string paramname)
// 1. 獲取其從父類繼承下來的所有字段( object.class 排除)
listfieldlist = new arraylist<>();
class<?> clazz = param.getclass();
while (clazz != null && !clazz.equals(object.class))
// 2. 返回引數的值
for (field field : fieldlist)
} catch (illegalacces***ception e)
break;}}
return "";
}}
以上就是今天要講的內容,本文僅僅簡單介紹了redisson的一種使用,希望對大家有用。
乙個很短的故事,值得你一看
女人在廚房做飯,男人在客廳陪我下棋。女人喊 你進來一下。聲音很大,語氣卻溫柔。男人去了一趟廚房,只有幾步遠,用了一溜小跑。出來時,他拿著切開的西紅柿,邊咬邊問我 該輪到誰走棋?我問 你喜歡吃生西紅柿?男人一邊咬著西紅柿,一邊抬頭瞅瞅廚房 不太喜歡 他為什麼喊你 我繼續問,還切了這麼一大塊 她以為我喜...
乙個值得思考的例子
coding cp936 python 27 xiaodeng 乙個值得思考的例子 defintersect seq1,seq2 res 初始化for x in seq1 遍歷seq1 if x in seq2 return res 注意return和res 的同等縮排 seq1 4,5,1,2,3...
乙個你愛,乙個愛你,你選擇哪乙個
文 賴忠標 小時候可猛了 愛你的每天都會惦記著你 每天都會給你打 你愛的每天都會先打 給他 愛你的從來不會主動掛掉你的 你愛的有時候甚至連句再見都不肯說 就掛掉了 愛你的看見你受一點點小傷都難受到不行 你愛的看見如果是一點點小傷會罵你笨 愛你的自從認識你以後開始學會照顧你,關心你 你愛的你認識他以後...