日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Boot整合Spring Data Redis-整合步骤

發(fā)布時間:2024/4/13 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot整合Spring Data Redis-整合步骤 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
如何通過SpringBoot去整合我們的Redis,這里我們先對SpringBoot Redis做一個簡單的介紹,其實SpringBoot Redis,和我們之前講的Spring JPA都是Spring Data下的一個模塊,其實不同的是什么呢,Spring Data JPA,我們對數(shù)據(jù)庫操作的一些行為,那么SpringBoot Data Redis,簡化了我們在項目當中,如果使用Redis的話,對于Redis操作的一些行為,當然SpringBoot Data除了我們說的那兩個模塊之外,還有JDBC,還有MongoDB,這都是他在SpringData下提供的模塊,這些模塊的出發(fā)點呢,也是針對了如果我們項目當中使用了這些技術(shù),那么他就可以去簡化技術(shù)操作的一些行為,現(xiàn)在我們把筆記整理一下,SpringData Redis他是什么呢,Spring Data Redis是屬于Spring Data下的一個模塊,然后他的作用是什么呢,就是簡化對于Redis的一個操作,這是他的一個作用,然后接下來我們看一下,如何在我們的代碼當中,如何使用SpringBoot去整合Redis,首先打開我們的eclipse,我們先去創(chuàng)建一個項目,這里我們就快速創(chuàng)建一個,在我們的項目當中找一個最簡單的,首先對pom文件做一個修改,項目修改完以后,我們接下來看,我們既然想整合Spring Data Redis,我們要在項目當中添加相應(yīng)的坐標,在這里我們添加一個坐標<!-- Spring Data Redis的啟動器 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency>提供了一個啟動器,那么這個啟動器的名字叫什么呢,spring-boot-starter-data-redis,我們把這個坐標加入以后,看一下Maven Dependecies,把它展開,會多了一個Spring-data-redis的一個jar包,這是Spring data整合Redis的一個核心jar包,除此之外還會多一個jedis的jar包,這個jedis jar包大家不陌生了,其實jedis的主要作用是提供了JAVA操作redis的一套API,我們以前用spring整合redis的時候也用了這個jar包,所以這兩個jar包進來以后,就可以使用spring data redis去做相應(yīng)的開發(fā),第一步我們把坐標加進來之后呢,在這里我們先回顧一下,如果我們用Spring整合Redis的時候,需要怎么做,大家應(yīng)該還有印象,我們需要在Spring當中,添加一個對于Redis的一個配置文件,那么在配置文件當中呢,我們可能要配這么幾個東西,比如我們要做一個Redis的連接,起碼我們要在配置文件中去配一個叫Jedis Pool Config的對象,然后里面給一些連接池的信息,當然你如果不配Jedis Pool Config,他也會有一個默認的參數(shù)值的設(shè)定,大家應(yīng)該還記得,我們除了要配這個以外呢,其次我們還要配一個Jedis的客戶端,如果你要是單機版的,Jedis Client,如果是集群版的呢,Jedis Cluster,其實我們現(xiàn)在用SpringBoot來整合我們的Redis,也得去做,只不過在配置整合他的時候呢,我們在SpringBoot當中,不需要再去創(chuàng)建配置文件了,我們把以往在配置文件里的配置,現(xiàn)在全部移植到了代碼當中,通過注解加方法,來實現(xiàn)這樣一個配置,那我們看一下代碼當中怎么去做呢,首先我們打開項目,我可以在項目下去新建一個類,這個類當然你放到哪個包下都行,放到這個config包下,然后我給他起個名,這個名稱你叫什么都行,比如我叫RedisConfig,那么這個類的作用是什么呢,完成對于Redis整合的一些配置,我們在這里要配置一些連接池,Redis的連接池,RedisConfig可以,我們還要將連接池注入給客戶端,把我們原來在xml里面所做的,全移植到類當中了,這個類肯定是一個配置類,既然是配置類了,我們肯定要讓SpringBoot去啟動的時候,去初始化他,這個時候我們要用到一個@Annotation,@Configuration,其實這個Annotation并不陌生了,之前用過,這個是SpringBoot的配置注解,在哪個類上加上注解,要去加載這個類,我們加載這個類的目的,方法對Redis做一個配置,所以這里還要提供一些方法,至于提供幾個方法,完全由我們自己來設(shè)計,總而言之你需要在方法當中,最后返回一個RedisTemplate的一個對象就可以了,你也可以在一個方法上去完成所有的配置,你也可以放到不同的方法上去實現(xiàn),那么為了我們便于理解,我們就采用分解的形式,來對他做一個配置,JedisPoolConfig參數(shù)的配置,那如果需要做這個事的話,我這個方法要怎么編寫呢,創(chuàng)建JedisPoolConfig/*** 1.創(chuàng)建JedisPoolConfig對象。在該對象中完成一些鏈接池配置**/ @Bean public JedisPoolConfig jedisPoolConfig(){JedisPoolConfig config = new JedisPoolConfig();//最大空閑數(shù)config.setMaxIdle(10);//最小空閑數(shù)config.setMinIdle(5);//最大鏈接數(shù)config.setMaxTotal(20);return config; }那么這個方法怎么寫呢,其實這個方法不管你叫什么名,你只要返回一個JedisPoolConfig對象就可以了,你叫什么都行,我們叫jedisPoolConfig,然后這個方法也是要讓SpringBoot去執(zhí)行的一個方法,那么對于這樣的方法呢,上面也要加一個@Bean的注解,這個注解我們之前也用過,這個注解最大的特點就是,SpringBoot在啟動時,對于@Configuration這樣的類,會加載同時去執(zhí)行一下@Bean標記的方法,其實說白了,@Bean標記和我們配置文件當中Bean標簽是一個含義的,并且把這個方法和返回的對象,放到SpringIOC容器里去緩存,就是這個意思,那在這個方法里肯定要返回一個pool對象,那么在這里我們先去創(chuàng)建他,如果你在這里沒有對JedisPoolConfig做任何配置,那么他就會走連接池默認的配置,我們也可以做自己所需要的配置,這里有一個setMaxIdle,這個就是配置最大空閑數(shù)的,除了最大空閑數(shù)以外呢,minIdle,這是最小空閑數(shù),除此之外還有一個最大連接數(shù),這些值可以根據(jù)你的實際情況來處理,我就暫時先配置這些,這樣我們就完成了一些簡單的配置,SpringBoot對于方法一執(zhí)行,我們創(chuàng)建的JedisPoolConfig放到IOC里面去,然后接下來第二步,我們要去創(chuàng)建一個JedisConnectionFactory這樣的一個對象/*** 2.創(chuàng)建JedisConnectionFactory:配置redis鏈接信息*/ @Bean public JedisConnectionFactory jedisConnectionFactory(JedisPoolConfig config){JedisConnectionFactory factory = new JedisConnectionFactory();//關(guān)聯(lián)鏈接池的配置對象factory.setPoolConfig(config);//配置鏈接Redis的信息//主機地址factory.setHostName("10.40.8.152");//端口factory.setPort(6379);return factory; }這個對象主要是為了,需要把我們剛才創(chuàng)建的JedisPoolConfig,還有redis的一些連接配置,也是在這個方法里完成的,我們來寫一個吧,這是第二步,這個對象叫JedisConnectionFactory,通過他來配置我們的連接參數(shù),這個也要讓Spring來做一個執(zhí)行,所以我要加一個@Bean,就是返回JedisConnectionFactory,在方法里我去創(chuàng)建這個對象,這個方法其實我們是需要一個參數(shù)了,就是把我們剛剛創(chuàng)建的連接池的對象拿過來,這個時候在Spring的IOC容器里已經(jīng)有了,所以讓SpringBoot執(zhí)行這個方法的時候,把這個對象拿過來,放到這里,然后我們通過這個對象,把我們的JedisPoolConfig傳到里面,這樣就完成了配置信息的一個關(guān)聯(lián),接下來我們就要配置Redis的一些信息,這個是關(guān)聯(lián)連接池的配置對象,接下來配置連接Redis的信息,比如我們要知道Redis在什么位置,我們給定當前Redis所在的當前地址,我們的Redis裝到了Linux當中,這個是我們運行Redis的服務(wù)器,然后我們可以去配置Redis的端口,Redis里監(jiān)聽了這個端口,接下來是Redis的端口,端口我們并沒有對他做修改,默認的是6379,這樣就配置好了,這里你還可以設(shè)置他的database,我們Redis裝完以后,是有16個庫,然后他他的下標是0到15,這塊會給一個索引,如果沒給默認的就是0的庫,下標所以為0的,那這里我們不給了,然后return factory,這樣第二步創(chuàng)建JedisConnectionFactory,接下來就是我們的第三步,第三步我們要去創(chuàng)建什么呢,這個就是要創(chuàng)建SpringBoot Redis,操作Redis的一個緩存模板對象,創(chuàng)建RedisTemplate,這個模板對象呢,就是里面封裝了一些API,讓我們?nèi)edis操作,以前用Spring整合Redis的時候,我這里面還要去定義一些方法,自己去定義一些Redis操作的行為,然后通過調(diào)用這個方法,這些都在RedisTemplate里面封裝了,這個對象的作用就是,用于執(zhí)行操作Redis的方法,還是加一個@Bean,這個對象叫RedisTemplate,其實泛型就是你要操作的數(shù)據(jù)類型,比如Key是String類型的,value可以給一個Object,然后方法名叫redisTemplate/*** 3.創(chuàng)建RedisTemplate:用于執(zhí)行Redis操作的方法*/ @Bean public RedisTemplate<String,Object> redisTemplate(JedisConnectionFactory factory){RedisTemplate<String, Object> template = new RedisTemplate<>();//關(guān)聯(lián)template.setConnectionFactory(factory);//為key設(shè)置序列化器template.setKeySerializer(new StringRedisSerializer());//為value設(shè)置序列化器template.setValueSerializer(new StringRedisSerializer());return template; }這個方法里需要一個參數(shù),就是我們剛剛創(chuàng)建的JedisConnectionFactory,因為只有通過它才知道,去對哪個Redis進行操作,通過他的參數(shù)傳遞過來,在這里我們還是得創(chuàng)建一個對象,然后我們要把JedisConnectionFactory對象,注入給他,我們還有這樣的一個工作需要去做,RedisTemplate這個對象,他所提供的API,在Redis操作的時候,他需要我們設(shè)置一個對key和value序列化對象的一個指定,序列化的一個指定,我們來看一下序列化對象是什么意思,org\springframework\data\spring-data-redis\1.8.11.RELEASE\spring-data-redis-1.8.11.RELEASE.jarorg.springframework.data.redis.serializer這些是序列化器,這些序列化器呢,主要的作用是為了讓我們向Redis里面存儲數(shù)據(jù)的時候,對key和value做了一些序列化的操作,這么說可能挺抽象的,舉個例子,原來我們使用Spring整合Redis的時候,我現(xiàn)在想將一個對象,存到Redis里,怎么辦,我們肯定不能直接把某個對象扔到Redis里,這個時候我們需要用到一個工具類,比如說你可以通過JSON的格式,用一個JSON的工具類,先把你的對象轉(zhuǎn)成JSON,然后把轉(zhuǎn)化完的字符串,放到Redis里去存儲,Redis的特點呢,這個種key和value的結(jié)合,存的內(nèi)容就是字符串,字符串的形式去存的,不管你是使用的String類型還是List類型,比如String類型和List類型,最大的區(qū)別是組織方式上會有一些區(qū)別而已,其他的存的都是字符類型,所以這塊我就直接給他一個對象,沒法去給你存這個對象,那么我們就必須去給他做一個轉(zhuǎn)換的處理,那么在我們Spring Data Redis當中呢,其實就為你準備了一些序列化器,可以根據(jù)一個序列化器,去做一個對象到序列化的一個處理器,這樣我們就變得容易的多了,換句話說有了序列化器了,轉(zhuǎn)換的工具就不需要了,比如我們先操作String類型為主,叫StringRedisSerializer,是針對于字符串的序列化器,那么我們這里要對誰進行序列化器的一個使用呢,兩個,一個是他的key,一個是他的value,我們要用哪個序列化器我們就去用誰,字符串的序列化器template.setKeySerializer(new StringRedisSerializer());這個是給key設(shè)置序列化器,也就是key都是可以是自定義的對象了,他就會根據(jù)序列化器序列化我們的對象,序列化到字符串的一個轉(zhuǎn)換,然后我們還得給我們的value設(shè)置一個序列化器template.setValueSerializer(new StringRedisSerializer());還是new一個字符串的序列化器,這樣我們SpringBoot去整合Redis,整合工作就已經(jīng)配置好了,你可以把這寫整合成一個,這里只返回一個RedisTemplate,然后把這些行為放到一個方法里,返回RedisTemplate,這也是可以的,所以這也是為了講解一個配置過程,編寫Spring Data Redis的配置類 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.learn</groupId><artifactId>spring-boot-redis</artifactId><version>0.0.1-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.12.RELEASE</version></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><!-- springBoot的啟動器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Spring Data Redis的啟動器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency> </dependencies> </project> package com.learn.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.StringRedisSerializer;import redis.clients.jedis.JedisPoolConfig;/*** 完成對Redis的整合的一些配置*/ @Configuration public class RedisConfig {/*** 1.創(chuàng)建JedisPoolConfig對象。在該對象中完成一些鏈接池配置**/@Beanpublic JedisPoolConfig jedisPoolConfig(){JedisPoolConfig config = new JedisPoolConfig();//最大空閑數(shù)config.setMaxIdle(10);//最小空閑數(shù)config.setMinIdle(5);//最大鏈接數(shù)config.setMaxTotal(20);return config;}/*** 2.創(chuàng)建JedisConnectionFactory:配置redis鏈接信息*/@Beanpublic JedisConnectionFactory jedisConnectionFactory(JedisPoolConfig config){JedisConnectionFactory factory = new JedisConnectionFactory();//關(guān)聯(lián)鏈接池的配置對象factory.setPoolConfig(config);//配置鏈接Redis的信息//主機地址factory.setHostName("10.40.8.152");//端口factory.setPort(6379);factory.setPassword("1234");return factory;}/*** 3.創(chuàng)建RedisTemplate:用于執(zhí)行Redis操作的方法*/@Beanpublic RedisTemplate<String,Object> redisTemplate(JedisConnectionFactory factory){RedisTemplate<String, Object> template = new RedisTemplate<>();//關(guān)聯(lián)template.setConnectionFactory(factory);//為key設(shè)置序列化器template.setKeySerializer(new StringRedisSerializer());//為value設(shè)置序列化器template.setValueSerializer(new StringRedisSerializer());return template;} }

?

總結(jié)

以上是生活随笔為你收集整理的Spring Boot整合Spring Data Redis-整合步骤的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。