1. 程式人生 > >Spring Boot整合Redis(附帶序列化方式對比)

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 整合MyBatis1

一、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