redisson 乙個你值得學習的框架

2021-10-24 16:48:30 字數 2806 閱讀 7703

好久沒來部落格了,遇到了一些好東西分享給大家,不喜勿噴!

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...

乙個你愛,乙個愛你,你選擇哪乙個

文 賴忠標 小時候可猛了 愛你的每天都會惦記著你 每天都會給你打 你愛的每天都會先打 給他 愛你的從來不會主動掛掉你的 你愛的有時候甚至連句再見都不肯說 就掛掉了 愛你的看見你受一點點小傷都難受到不行 你愛的看見如果是一點點小傷會罵你笨 愛你的自從認識你以後開始學會照顧你,關心你 你愛的你認識他以後...