Spring Boot整合Redis(附帶序列化方式對比)
一、快取資料庫效能Redis、memcached、Ehcache
Redis儲存資料型別豐富,對於儲存資料量不是很大的情況下處理效能效果較好、支援持久化
memcached對於大量的資料儲存和讀取效能要優於Redis、沒有持久化
Ehcache最大的特點是輕量級,而且儲存的資料型別為物件
二、Redis序列化常見的方式:
JdkSerializationRedisSerializer:JDK自帶的序列化方式、儲存的字串內容在序列化的情況下偏長,會佔用過多的記憶體
OxmSerializer:序列化的時間相對較長
Jackson2JsonRedisSerializer:json資料格式、序列化時間和序列化之後內容的長度都要優於前兩種,對比前者我選擇的序列化方式是第三種
三、使用流程(安裝redis服務能正常連線--省略)
服務啟動類
@SpringBootApplication @EnableEurekaClient public class RedisServer { public static void main(String[] args) { new SpringApplicationBuilder(RedisServer.class).web(true).run(args); } }
pom.xml
<!-- 整合redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.7.2.RELEASE</version> </dependency> <!-- redis客戶端操作 --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.0</version> </dependency>
配置檔案:
application.yml
server: port: 9009 spring: application: name: springCloud-redis eureka: instance: hostname: localhost client: register-with-eureka: true fetch-registry: false service-url: defaultZone: http://localhost:9001/eureka/
bootstrap.yml
spring: redis: database: 0 # Redis伺服器地址 host: localhost # Redis伺服器連線埠 port: 6379 # Redis伺服器連線密碼(預設為空) password: # 連線池最大連線數(使用負值表示沒有限制) timeout: 0 # 連線超時時間(毫秒) pool: max-active: 8 # 連線池最大阻塞等待時間(使用負值表示沒有限制) max-wait: -1 # 連線池中的最大空閒連線 max-idle: 8 # 連線池中的最小空閒連線 min-idle: 0
config類配置
package redis.config; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import java.util.HashMap; import java.util.Map; @Configuration @EnableCaching public class RedisConfig extends CachingConfigurerSupport { @Bean public CacheManager cacheManager(RedisTemplate redisTemplate) { RedisCacheManager rcm = new RedisCacheManager(redisTemplate); //設定快取過期時間 rcm.setDefaultExpiration(60);//秒 return rcm; } /** * RedisTemplate配置 * @param factory * @return */ @Bean public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) { StringRedisTemplate template = new StringRedisTemplate(factory); //定義value的序列化方式 Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); template.setValueSerializer(jackson2JsonRedisSerializer); template.setHashValueSerializer(jackson2JsonRedisSerializer); template.afterPropertiesSet(); return template; } }
編寫介面和實現類
public interface RedisService { void set(String key, Object value); Object get(String key); }
@Service public class RedisServiceImpl implements RedisService{ @Resource private RedisTemplate<String,Object> redisTemplate; //stringRedisTemplate只能快取key-value的String型別 @Override public void set(String key, Object value) { ValueOperations<String,Object> vo = redisTemplate.opsForValue(); vo.set(key, value); } @Override public Object get(String key) { ValueOperations<String,Object> vo = redisTemplate.opsForValue(); return vo.get(key); } }
controller層實現:
@RestController @RequestMapping("/redis") public class RedisController { @Autowired private RedisService redisService; @RequestMapping("/save") public String save(){ //這裡用於測試,key值可以自定義實現 redisService.set("123456","test-redis"); return "SUCCESS"; } @RequestMapping("/get") public String get(){ //這裡用於測試,key值可以自定義實現 return (String) redisService.get("123456"); } }
四、註冊服務啟動,呼叫介面測試--省略
相關推薦
Spring Boot整合Redis(附帶序列化方式對比)
一、快取資料庫效能Redis、memcached、EhcacheRedis儲存資料型別豐富,對於儲存資料量不是很大的情況下處理效能效果較好、支援持久化memcached對於大量的資料儲存和讀取效能要優於Redis、沒有持久化Ehcache最大的特點是輕量級,而且儲存的資料型別
spring-boot整合redis作為快取(3)——自定義key
分幾篇文章總結spring-boot與Redis的整合 4、自定義key 5、spring-boot引入Redis 在上一篇文章中說道key是用來分辨同一個快取中的快取資料的。key是可以自己制定的,也
SpringBoot入門系列(七)Spring Boot整合Redis快取
前面介紹了Spring Boot 中的整合Mybatis並實現增刪改查,。不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/1657780.html。 今天主要講解Springboot整合Redis。Redis是目前使用最多的快取,包
Spring Boot-整合redis(六)
lec access IV 使用 tty factor cat 訪問 spa redis安裝 參考:https://www.cnblogs.com/LQBlog/p/9214517.html 單機版 1.添加pom依賴 <!-- Spring Boot R
spring boot 整合redis 以一個熱門房產為例子
1.新增redis依賴 就是jedis redis.clients jedis 2.9.0 2.每次點選房屋詳情熱度加一 呼叫此方法 recommandService.increase(id);//每次點選房屋熱度加1 3.recommandService如何寫主要
Spring Boot整合Redis實戰操作
最近在使用Spring Boot,發現其功能真是強大,可以快速的整合很多的元件功能,非常方便: 今天就來介紹下,如何整合Redis。 定義 Redis 是一個高效能的key-value資料庫。它支援儲存的value型別很多,包括string(字串)、list(連結串列)、set(集合)、zset
Spring boot 整合MyBatis(1)
一、Spring boot整合MyBatis Mybatis提供了mybatis-spring-boot-starter 目前 1.3.x 是最新版 https://github.com/mybatis/spring-boot-startergit下載地址
Spring boot整合Redis(2)—RedisTemplate的使用來儲存Map集合
前言:上一篇文章我們用的是StringRedisTemplate,但是它存在一點問題,也迫使我重新寫了程式碼,問題是:在我們往快取中存入數字形式的String型別時,我們在利用Spring could將獲取到的資料傳送到另一服務時,我們發現數據已經被強轉為Integer型別了,因為我們可能傳輸的資料龐大,型別
Spring Boot整合Redis及RedisTemplate常用操作
Spring Boot整合Redis maven依賴 <!-- redis 依賴 --> <dependency> <groupId>org.springframework.boot</groupId> <
spring boot整合redis實戰
1.spring boot整合redis,此次專案有進行maven的相關配置工作,整個程式碼結構目錄如下: 其中pom檔案繫結相關的redis的引數步驟如下: 其中<dependency>依賴當中進新配置了相關的redis依賴,也就是spring-boot-start
【Spring Boot學習總結】14.Spring Boot整合Redis-與傳統方式對比
前面我們講解了如何使用Spring Boot來控制事務,下面我們來講解一下如何使用Spring Boot來整合Redis 為了對比傳統工程與Spring Boot整合的不同,以及彰顯Spring Boot整合的優勢,我們會逐一剖析傳統整合方式與Spring Boot整合方式。 一、傳統方式整
spring boot 整合 druid(深入淺出)
spring boot 整合 druid 想必搜這篇文章的朋友差不多都知道druid的屬性和知識了吧,獲取之前使用的別的方式進行整合的。不過也簡單的講一下阿里巴巴提供的這個druid的簡介,讓我們一塊學習一下 一、簡介 Druid首先是一個數據庫連線池。 Druid已經在阿里巴巴部署了超過6
spring boot 整合 jpa (一) -- 之基礎配置
spring boot 整合 jpa (二) – 之資料操作 https://blog.csdn.net/qq_41463655/article/details/82939560 spring boot 整合 jpa (三) – 之表關係對映 https://blog.csdn.ne
spring boot 整合 jpa (三) -- 之表關係對映
spring boot 整合 jpa (一) – 之基礎配置 https://blog.csdn.net/qq_41463655/article/details/82939481 spring boot 整合 jpa (二) – 之資料操作 https://blog.csdn.net/q
spring boot 整合 jpa (二) -- 之資料操作
spring boot 整合 jpa (一) – 之基礎配置 https://blog.csdn.net/qq_41463655/article/details/82939481 spring boot 整合 jpa (三) – 之表關係對映 https://blog.csdn.net/
Spring boot整合Redis
1.依賴 (注意版本問題) <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>
spring boot 整合 mybatis(含程式碼自動生成)
環境簡介:Idea ,JDK8,MAVEN 開工: 第一步建立專案 第二步選擇maven依賴 第三步,補充自己需要用到的maven依賴(通過工具沒法自動完成的) <?xml version="1.0" encoding="UTF-8"?> <project xmlns="
spring boot 整合 freemark(簡單結構)
一、建立Mean 專案 這個就不多說了 二、我的spring boot demo 結構 如下: 三、主要的配置檔案(application.properties ;pom.xml ; log4j2.xml) (1、)application.properties 檔案
spring boot 整合redis+shiro在自定義Realm不能使用@Autowired註解
剛開始spring boot 整合shiro快取使用的是ehcache,自動注入userService如下,沒有問題 @Autowired @Lazy private SysUserService userService; 當將快取換成了redis後,該註解
Spring Boot開發系列(Redis)(三)--Spring boot 整合redis完成簡單的get,set操作
Spring Boot開發系列(Redis)(三)–Spring boot 整合redis完成簡單的get,set操作 【1】匯入reids相關依賴 <dependency> <groupId>redis.clients</g