Spring Boot 2 整合Reids

Redis是什么,我這里就不多說了火邓。

先在pom.xml添加依賴包

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

我們先看看 這些包都依賴那些內(nèi)容


image.png

我們需要做一個(gè)自動(dòng)序列化的Bean

/**
 * Redis 初始化配置
 */
@Configuration
@EnableCaching // 開啟注解
public class RedisConfig {

    @Bean
    public RedisTemplate<String, Serializable>
    redisTemplate(LettuceConnectionFactory connectionFactory) {
        RedisTemplate<String, Serializable> redisTemplate = new RedisTemplate<>();
        //使用Jackson2JsonRedisSerializer來序列化和反序列化redis的value值
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());

        //開啟事務(wù)
        redisTemplate.setEnableTransactionSupport(true);
        redisTemplate.setConnectionFactory(connectionFactory);

        return redisTemplate;
    }
}

SpringBoot 開發(fā)效率其實(shí)和PHP已經(jīng)差不多了

我們暫時(shí)只用 opsForValue堆巧,這是Redis常用的類型勤揩。我們可以理距為字符串類型吧寞奸,如果你要用Redis 的list類型的話 就是 opsForList

@RestController
@RequestMapping(value = "/string")
public class RedisStringController {

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @PutMapping(value = "/put")
    public void put(String key, @RequestParam(required = false, defaultValue = "default") String value) {
        stringRedisTemplate.opsForValue().set(key, value);
    }

    @GetMapping(value = "/get")
    public Object get(String key) {
        return stringRedisTemplate.opsForValue().get(key);
    }
}

spring boot整合redis自動(dòng)化配置原理分析

我們都知道spring boot自動(dòng)化配置中的配置都是通過spring-configuration-metadata.json來約束的,同理redis也是這樣的溶诞,我們配置了spring.redis.host,不妨來找下這個(gè)配置項(xiàng)

{
"name": "spring.redis.host",
"type": "java.lang.String",
"description": "Redis server host.",
"sourceType": "org.springframework.boot.autoconfigure.data.redis.RedisProperties",
"defaultValue": "localhost"
}

從這能看出來redis的配置都是通過RedisProperties這個(gè)類來配置的,在這里面我們能看到眾多的redis配置及默認(rèn)配置决侈,我們可以從一個(gè)入口切入螺垢,就拿port切入,來看下port在哪設(shè)置的

image.png

org.springframework.boot.autoconfigure.data.redis.RedisConnectionConfiguration#getStandaloneConfig
看出在RedisConnectionConfiguration中的getStandaloneConfig中賦值的,那這個(gè)方法又是誰調(diào)用的呢?繼續(xù)找?

image.png

從圖中能看出來有兩個(gè)地方可能會(huì)調(diào)用,從類的名字能看出來赖歌,spring boot是支持Jedis和Lettuce兩種客戶端來操作redis枉圃,那到底是用哪個(gè)呢? 都看看唄

image.png
image.png

從圖中截取的源碼中能看出來,我是使用了LettuceConnectionConfiguration庐冯,看注解是我引入了RedisClient孽亲,我什么時(shí)候引入的?于是我就看看maven的依賴

image.png

從maven依賴中能看出一些重要的信息:

  • 1.spring-boot-starter-data-redis中其實(shí)用的是spring-data-redis展父,其實(shí)是包裝了下
  • 2.依賴了lettuce-core返劲,原來是從這里引入的,怪不得

如何驗(yàn)證呢犯祠?不能瞎說

? 要想知道很簡(jiǎn)單的旭等,在我們自己寫的RedisConfig中打下斷點(diǎn),看看用的RedisConnectionFactory到底是不是LettuceConnectionFactory就能證明了

image.png

果然如此衡载!

簡(jiǎn)單的流程就是:

1.spring boot通過application配置加載redis配置

2.解析封裝成RedisProperties

3.根據(jù)@ConditionalOnClass判斷使用哪個(gè)Redis客戶端搔耕,封裝成LettuceClientConfiguration并創(chuàng)建LettuceConnectionFactory

4.通過@Bean創(chuàng)建我們自己的配置類在LettuceConnectionFactory基礎(chǔ)上添加我們自己自定義的配置

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市痰娱,隨后出現(xiàn)的幾起案子弃榨,更是在濱河造成了極大的恐慌,老刑警劉巖梨睁,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鲸睛,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡坡贺,警方通過查閱死者的電腦和手機(jī)官辈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來遍坟,“玉大人拳亿,你說我怎么就攤上這事≡赴椋” “怎么了肺魁?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)隔节。 經(jīng)常有香客問我鹅经,道長(zhǎng)寂呛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任瘾晃,我火速辦了婚禮贷痪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘酗捌。我一直安慰自己呢诬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布胖缤。 她就那樣靜靜地躺著尚镰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪哪廓。 梳的紋絲不亂的頭發(fā)上狗唉,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音涡真,去河邊找鬼分俯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛哆料,可吹牛的內(nèi)容都是我干的缸剪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼东亦,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼杏节!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起典阵,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤奋渔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后壮啊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嫉鲸,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年歹啼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了玄渗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡狸眼,死狀恐怖藤树,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情份企,我是刑警寧澤也榄,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布巡莹,位于F島的核電站司志,受9級(jí)特大地震影響甜紫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜骂远,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一囚霸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧激才,春花似錦拓型、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至东帅,卻和暖如春压固,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背靠闭。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國打工帐我, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人愧膀。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓拦键,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親檩淋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子芬为,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 最近在學(xué)習(xí)Spring Boot 2.x整合Redis,在這里和大家分享一下狼钮,希望對(duì)大家有幫助碳柱。 Redis是什么...
    James_Shangguan閱讀 1,116評(píng)論 0 4
  • 一:簡(jiǎn)介Redis是一個(gè)基于鍵值對(duì)的開源內(nèi)存數(shù)據(jù)存儲(chǔ),Spring對(duì)Redis的支持是通過Spring Data ...
    愛的旋轉(zhuǎn)體閱讀 1,253評(píng)論 0 0
  • 1.引入依賴包 Spring Boot 提供了對(duì) Redis 集成的組件包:spring-boot-starter...
    awaa閱讀 365評(píng)論 0 0
  • 久違的晴天,家長(zhǎng)會(huì)涎拉。 家長(zhǎng)大會(huì)開好到教室時(shí)瑞侮,離放學(xué)已經(jīng)沒多少時(shí)間了。班主任說已經(jīng)安排了三個(gè)家長(zhǎng)分享經(jīng)驗(yàn)鼓拧。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,523評(píng)論 16 22
  • 創(chuàng)業(yè)是很多人的夢(mèng)想半火,多少人為了理想和不甘選擇了創(chuàng)業(yè)來實(shí)現(xiàn)自我價(jià)值,我就是其中一個(gè)季俩。 創(chuàng)業(yè)后钮糖,我由女人變成了超人,什...
    亦寶寶閱讀 1,810評(píng)論 4 1