日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Spring Boot 快速集成 Redis的方法

瀏覽:24日期:2023-08-27 14:59:57

Spring Boot 如何快速集成 Redis?沒錯(cuò),棧長(zhǎng)本文教你,讓大家少走彎路!

添加依賴

使用像 Redis 這類的 NoSQL 數(shù)據(jù)庫就必須要依賴 spring-data-redis 這樣的能力包,開箱即用,Spring Boot 中都封裝好了:

引入spring-boot-starter-data-redis:

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

Spring Boot 基礎(chǔ)知識(shí)就不介紹了,不熟悉的可以關(guān)注公眾號(hào)Java技術(shù)棧,在后臺(tái)回復(fù):boot,可以閱讀我寫的歷史實(shí)戰(zhàn)教程。

它主要包含了下面四個(gè)依賴:

spring-boot-dependencies spring-boot-starter spring-data-redis lettuce-core

添加 Redis 連接配置

Redis 自動(dòng)配置支持配置單機(jī)、集群、哨兵,來看下 RedisProperties 的參數(shù)類圖吧:

Spring Boot 快速集成 Redis的方法

本文以單機(jī)為示例,我們?cè)?application.yml 配置文件中添加 Redis 連接配置,:

spring: redis: host: 192.168.8.88 port: 6379 password: redis2020 database: 1

也可以將參數(shù)配置在 Spring Cloud Config Server 配置中心中。

Redis 自動(dòng)配置

添加完依賴和連接配置參數(shù)之后,Redis 就能自動(dòng)配置,參考 Redis 的自動(dòng)配置類:

org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration

源碼:

@Configuration(proxyBeanMethods = false)@ConditionalOnClass(RedisOperations.class)@EnableConfigurationProperties(RedisProperties.class)@Import({ LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class })public class RedisAutoConfiguration {

...

}

通過看源碼,Redis內(nèi)置兩種客戶端的自動(dòng)配置:

1)Lettuce(默認(rèn)):

org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration

2)Jedis:

org.springframework.boot.autoconfigure.data.redis.JedisConnectionConfiguration

為什么默認(rèn)Lettuce,其實(shí)文章之前的四個(gè)依賴也看出來了,請(qǐng)看默認(rèn)依賴:

Spring Boot 快速集成 Redis的方法

自動(dòng)配置提供了兩種操作模板:

1)RedisTemplate<Object, Object>

key-value 都為 Object 對(duì)象,并且默認(rèn)用的 JDK 的序列化/反序列化器:

org.springframework.data.redis.serializer.JdkSerializationRedisSerializer

使用這個(gè)序列化器,key 和 value 都需要實(shí)現(xiàn) java.io.Serializable 接口。

2)StringRedisTemplate

key-value 都為 String 對(duì)象,默認(rèn)用的 String UTF-8 格式化的序列化/反序列化器:

org.springframework.data.redis.serializer.StringRedisSerializer

上面提到了兩種序列化器,另外還有兩種 JSON 的序列化器值得學(xué)習(xí)一下,下面配置會(huì)用到。

Jackson2JsonRedisSerializer GenericJackson2JsonRedisSerializer

使用方式上,兩種都可以序列化、反序列化 JSON 數(shù)據(jù),Jackson2JsonRedisSerializer 效率高,但 GenericJackson2JsonRedisSerializer 更為通用,不需要指定泛型類型。

核心配置

除了自動(dòng)配置之外,下面是 Redis 的核心配置,主要是自定義了 RedisTemplate 使用 JSON 序列化器。

另外就是,把幾個(gè)數(shù)據(jù)類型的操作類進(jìn)行了 Bean 池化處理。

@Configurationpublic class RedisConfig { @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(factory); StringRedisSerializer stringSerializer = new StringRedisSerializer(); RedisSerializer jacksonSerializer = getJacksonSerializer(); template.setKeySerializer(stringSerializer); template.setValueSerializer(jacksonSerializer); template.setHashKeySerializer(stringSerializer); template.setHashValueSerializer(jacksonSerializer); template.setEnableTransactionSupport(true); template.afterPropertiesSet(); return template; } private RedisSerializer getJacksonSerializer() { ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); return new GenericJackson2JsonRedisSerializer(om); } @Bean public HashOperations<String, String, Object> hashOperations(RedisTemplate<String, Object> redisTemplate) { return redisTemplate.opsForHash(); } @Bean public ValueOperations<String, Object> valueOperations(RedisTemplate<String, Object> redisTemplate) { return redisTemplate.opsForValue(); } @Bean public ListOperations<String, Object> listOperations(RedisTemplate<String, Object> redisTemplate) { return redisTemplate.opsForList(); } @Bean public SetOperations<String, Object> setOperations(RedisTemplate<String, Object> redisTemplate) { return redisTemplate.opsForSet(); } @Bean public ZSetOperations<String, Object> zSetOperations(RedisTemplate<String, Object> redisTemplate) { return redisTemplate.opsForZSet(); }}

如果你只想用默認(rèn)的 JDK 序列化器,那 RedisTemplate 相關(guān)配置就不是必須的。

緩存實(shí)戰(zhàn)

下面寫了一個(gè)示例,用來緩存并讀取緩存中一個(gè)類對(duì)象。

@GetMapping('/redis/set')public String set(@RequestParam('name') String name) { User user = new User(); user.setId(RandomUtils.nextInt()); user.setName(name); user.setBirthday(new Date()); List<String> list = new ArrayList<>(); list.add('sing'); list.add('run'); user.setInteresting(list); Map<String, Object> map = new HashMap<>(); map.put('hasHouse', 'yes'); map.put('hasCar', 'no'); map.put('hasKid', 'no'); user.setOthers(map); redisOptService.set(name, user, 30000); User userValue = (User) redisOptService.get(name); return userValue.toString();}

測(cè)試:

http://localhost:8080/redis/set?name=zhangsan

返回:

User(id=62386235, name=zhangsan, birthday=Tue Jun 23 18:04:55 CST 2020, interesting=[sing, run], others={hasHouse=yes, hasKid=no, hasCar=no})

Redis中的值:

192.168.8.88:6379> get zhangsan'['cn.javastack.springboot.redis.pojo.User',{'id':62386235,'name':'zhangsan','birthday':['java.util.Date',1592906695750],'interesting':['java.util.ArrayList',['sing','run']],'others':['java.util.HashMap',{'hasHouse':'yes','hasKid':'no','hasCar':'no'}]}]'

好啦,Spring Boot 快速集成 Redis 就到這了,下篇帶來 Spring Boot 如何快速集成 Redis 分布式鎖,關(guān)注公眾號(hào)Java技術(shù)棧,第一時(shí)間推送,敬請(qǐng)期待……

本文完整源代碼也將和下篇一起上傳到Github,歡迎大家 Star 關(guān)注學(xué)習(xí)。

https://github.com/javastacks/spring-boot-best-practice

推薦去我的博客閱讀更多:

1.Java JVM、集合、多線程、新特性系列教程

2.Spring MVC、Spring Boot、Spring Cloud 系列教程

3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程

4.Java、后端、架構(gòu)、阿里巴巴等大廠最新面試題

到此這篇關(guān)于Spring Boot 快速集成 Redis的方法的文章就介紹到這了,更多相關(guān)spring boot 集成redis內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产日产高清欧美一区二区三区| 欧美国产美女| 日本成人在线视频网站| 国产精品宾馆| 亚洲一级高清| 综合国产视频| 狠狠久久伊人中文字幕| 欧美日韩国产精品一区二区亚洲| 欧美影院精品| 影视先锋久久| 国产亚洲观看| 欧美在线亚洲| 麻豆高清免费国产一区| 午夜久久美女| 国产精品麻豆成人av电影艾秋| 欧美日韩免费观看视频| 午夜天堂精品久久久久| 蜜桃av.网站在线观看| 日日夜夜免费精品视频| 美女av在线免费看| 亚洲专区视频| 欧洲亚洲一区二区三区| 日韩av中文在线观看| 久久国产精品成人免费观看的软件| 91亚洲精品视频在线观看| 久久久久中文| 久久精品亚洲| 一区二区三区国产在线| 四虎成人av| 97久久中文字幕| 制服诱惑一区二区| 亚洲黄色免费看| 国产日韩欧美一区二区三区 | 欧美日韩黑人| 久久免费福利| 亚洲精品在线国产| 在线日韩电影| 精品国产一区二区三区噜噜噜| 三级在线观看一区二区 | 黄色网一区二区| 奇米狠狠一区二区三区| 蜜桃av一区| 久久久久国产精品一区三寸| 精品美女在线视频| 日韩av中文字幕一区二区三区| 婷婷六月综合| 日本不良网站在线观看| 国产亚洲精品美女久久| 久久国产精品亚洲77777| 日本精品影院| 精品91福利视频| 国产精品久久久久久久久久久久久久久 | 久久不卡国产精品一区二区| 丝袜美腿亚洲色图| 九九综合在线| 日本精品影院| 成人在线网站| 欧美亚洲日本精品| 成人在线视频区| 精品成av人一区二区三区| 日韩av不卡在线观看| 亚洲毛片网站| 一区二区三区国产在线| 亚洲欧美久久| 一区免费在线| 亚洲一区日韩在线| 久久不射网站| 99亚洲视频| 免费毛片在线不卡| 国产99精品一区| 特黄特色欧美大片| 久久精品123| 婷婷成人在线| 欧美日韩国产高清电影| 国产一区二区三区自拍| 亚洲性色av| 成人羞羞视频播放网站| 日韩欧美自拍| 欧美一区久久久| 高清一区二区| 国产精品一区亚洲| 国产精品白浆| 精品欠久久久中文字幕加勒比| 欧美丰满日韩| 国内精品福利| 精品国产aⅴ| 福利在线免费视频| 99视频精品全部免费在线视频| 欧美大黑bbbbbbbbb在线| 91久久亚洲| 最近国产精品视频| 国产精品亚洲欧美日韩一区在线| 麻豆一区二区在线| 日韩精品不卡一区二区| 精品中文字幕一区二区三区av| 久久亚洲风情| 日韩av资源网| 黄色网一区二区| 欧美日韩一二三四| 免费视频最近日韩| 欧美另类中文字幕| 国产一区二区三区视频在线| 精品亚洲美女网站| 国产视频一区欧美| 欧美一区二区三区久久精品| 精品日韩一区| 欧美日韩黑人| 日韩精品中文字幕一区二区| 久久精品国产一区二区| www成人在线视频| 日韩中文字幕av电影| 国产探花在线精品一区二区| 韩国女主播一区二区三区| 欧美成人国产| 亚洲精品亚洲人成在线观看| 免费日韩成人| 2023国产精品久久久精品双| 日韩区欧美区| 97国产精品| 久久午夜精品一区二区| 国产乱码精品一区二区三区四区| 午夜影院一区| 人人精品人人爱| 精品一区电影| 国产一在线精品一区在线观看| 亚洲精品乱码久久久久久蜜桃麻豆 | 麻豆精品久久| 欧美/亚洲一区| 久久国产视频网| 久久精品动漫| 欧美精品国产白浆久久久久| 欧美一区久久久| 日韩国产在线观看| 香蕉视频亚洲一级| 日本欧美在线| 日本不卡免费高清视频在线| 亚洲涩涩av| 久久uomeier| 91精品国产经典在线观看| 日韩在线视频精品| 日韩一二三区在线观看| 日本不卡免费高清视频在线| 亚洲精选久久| 色婷婷久久久| 久久av偷拍| 蜜桃传媒麻豆第一区在线观看| 成人在线黄色| 日韩激情综合| 激情综合自拍| 免费看一区二区三区| 老司机久久99久久精品播放免费| 国产经典一区| 免费的成人av| 成人免费网站www网站高清| 国产精品一级在线观看| 亚洲在线一区| 亚洲精品88| 国产伦理一区| 亚洲精品麻豆| 婷婷综合社区| 国产成人77亚洲精品www| 日本在线观看不卡视频| 亚洲午夜精品久久久久久app| 麻豆久久一区| 欧美日韩亚洲一区在线观看| 影院欧美亚洲| 久久婷婷亚洲| 久久精品二区亚洲w码| 亚洲精品伦理| 伊人影院久久| 欧美日韩精品免费观看视完整| 青青草精品视频| 免费人成网站在线观看欧美高清| 欧美精品资源| 一区二区精品伦理...| 国产午夜久久av| 免费在线欧美视频| 91精品国产福利在线观看麻豆| 国产成人免费| 69堂精品视频在线播放| 亚洲不卡视频| 日本精品影院| 高清不卡一区| 国产乱子精品一区二区在线观看| 蜜臀国产一区二区三区在线播放| 亚洲爱爱视频| 9999国产精品| 成人午夜毛片| 久久精品资源| 国产乱人伦精品一区| 日韩黄色在线观看| 四虎精品永久免费| 综合精品一区| 在线精品国产亚洲| 亚洲另类视频| 日韩在线观看中文字幕| 在线一区二区三区视频| 三级在线观看一区二区| 欧美专区在线| 视频一区二区中文字幕|