SpringBoot2 基礎案例(08):整合Redis資料庫,實現快取管理
本文原始碼: GitHub·點這裡 || GitEE·點這裡
一、Redis簡介
Spring Boot中除了對常用的關係型資料庫提供了優秀的自動化支援之外,對於很多NoSQL資料庫一樣提供了自動化配置的支援,包括:Redis, MongoDB, Elasticsearch。這些案例整理好後,陸續都會上傳Git。
SpringBoot2 版本,支援的元件越來越豐富,對Redis的支援不僅僅是擴充套件了API,更是替換掉底層Jedis的依賴,換成Lettuce。
本案例需要本地安裝一臺Redis資料庫。
二、SpringBoot2整合Redis
1、核心依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2、配置檔案
# 埠
server:
port: 8008
spring:
application:
# 應用名稱
name: node08-boot-redis
# redis 配置
redis:
host: 127.0.0.1
#超時連線
timeout: 1000ms
jedis:
pool:
#最大連線資料庫連線數,設 0 為沒有限制
max-active: 8
#最大等待連線中的數量,設 0 為沒有限制
max-idle: 8
#最大建立連線等待時間。如果超過此時間將接到異常。設為-1表示無限制。
max-wait: -1ms
#最小等待連線中的數量,設 0 為沒有限制
min-idle: 0
這樣Redis的環境就配置成功了,已經可以直接使用封裝好的API了。
3、簡單測試案例
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;
@RestController
public class RedisController {
@Resource
private StringRedisTemplate stringRedisTemplate ;
@RequestMapping("/setGet")
public String setGet (){
stringRedisTemplate.opsForValue().set("cicada","smile");
return stringRedisTemplate.opsForValue().get("cicada") ;
}
@Resource
private RedisTemplate redisTemplate ;
/**
* 設定 Key 的有效期 10 秒
*/
@RequestMapping("/setKeyTime")
public String setKeyTime (){
redisTemplate.opsForValue().set("timeKey","timeValue",10, TimeUnit.SECONDS);
return "success" ;
}
@RequestMapping("/getTimeKey")
public String getTimeKey (){
// 這裡 Key 過期後,返回的是字串 'null'
return String.valueOf(redisTemplate.opsForValue().get("timeKey")) ;
}
}
4、自定義序列化配置
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import java.io.Serializable;
/**
* Redis 配置
*/
@Configuration
public class RedisConfig {
private static final Logger LOGGER = LoggerFactory.getLogger(RedisConfig.class) ;
/**
* 序列化配置
*/
@Bean
public RedisTemplate<String, Serializable> redisTemplate
(LettuceConnectionFactory redisConnectionFactory) {
LOGGER.info("RedisConfig == >> redisTemplate ");
RedisTemplate<String, Serializable> template = new RedisTemplate<>();
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
template.setConnectionFactory(redisConnectionFactory);
return template;
}
}
5、序列化測試
import com.boot.redis.entity.User;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@RestController
public class SerializeController {
@Resource
private RedisTemplate redisTemplate ;
@RequestMapping("/setUser")
public String setUser (){
User user = new User() ;
user.setName("cicada");
user.setAge(22);
List<String> list = new ArrayList<>() ;
list.add("小學");
list.add("初中");
list.add("高中");
list.add("大學");
user.setEducation(list);
redisTemplate.opsForValue().set("userInfo",user);
return "success" ;
}
@RequestMapping("/getUser")
public User getUser (){
return (User)redisTemplate.opsForValue().get("userInfo") ;
}
}
三、原始碼地址
GitHub·地址
https://github.com/cicadasmile/spring-boot-base
GitEE·地址
https://gitee.com/cicadasmile/spring-boot-base
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69957347/viewspace-2671547/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SpringBoot2 基礎案例(13):基於Cache註解,管理Redis快取Spring BootRedis快取
- SpringBoot快取管理(二) 整合Redis快取實現Spring Boot快取Redis
- SpringBoot2 基礎案例(09):整合JPA持久層框架,簡化資料庫操作Spring Boot框架資料庫
- SpringBoot2 整合Ehcache元件,輕量級快取管理Spring Boot元件快取
- 15.SpringBoot整合Redis快取實現Spring BootRedis快取
- Spring AOP整合redis(註解方式) 實現快取統一管理SpringRedis快取
- Python操作Redis快取資料庫PythonRedis快取資料庫
- spring boot使用Jedis整合Redis實現快取(AOP)Spring BootRedis快取
- SpringBoot2 基礎案例(12):基於轉賬案例,演示事務管理操作Spring Boot
- 使用Spring Boot實現資料庫整合配置案例Spring Boot資料庫
- Redis快取資料庫-快速入門Redis快取資料庫
- 配運基礎資料快取瘦身實踐快取
- 第五節:基於Canal實現MySQL到Redis快取資料同步MySqlRedis快取
- Redis基礎(二)資料庫Redis資料庫
- 【資料庫】Redis基礎篇資料庫Redis
- Canal 實戰 | 第一篇:SpringBoot 整合 Canal + RabbitMQ 實現監聽 MySQL 資料庫同步更新 Redis 快取Spring BootMQMySql資料庫Redis快取
- SpringBoot整合Redis快取Spring BootRedis快取
- 高手如何處理快取:SpringBoot整合Redis實現快取處理(AOP技術)!快取Spring BootRedis
- SpringBoot2 基礎案例(07):整合Druid連線池,配置監控介面Spring BootUI
- SpringBoot2 基礎案例(06):引入JdbcTemplate,和多資料來源配置Spring BootJDBC
- 直播間原始碼,透過Redis實現資料快取原始碼Redis快取
- 使用Redis和Java進行資料庫快取 - DZone資料庫RedisJava資料庫快取
- SpringBoot整合Canal進行資料庫 快取同步Spring Boot資料庫快取
- redis快取優化案例Redis快取優化
- SpringBoot 實戰 (十一) | 整合資料快取 CacheSpring Boot快取
- 使用Redis和Java進行資料庫快取RedisJava資料庫快取
- 2018-11-08 拿redis 做快取Redis快取
- SpringBoot中整合Redis(快取篇)Spring BootRedis快取
- 介紹SpringBoot 整合 Redis 快取Spring BootRedis快取
- 使用 Infinispan 快取功能支援多個 Redis 資料庫快取Redis資料庫
- SpringBoot中使用Redis實現快取Spring BootRedis快取
- 【SpringBoot】結合Redis實現快取Spring BootRedis快取
- Redis快取穿透、擊穿、雪崩,資料庫與快取一致性Redis快取穿透資料庫
- 基於Spring Cache實現二級快取(Caffeine+Redis)Spring快取Redis
- 企業資訊化管理:銷售出庫單資料整合案例
- 分散式鎖的3種實現(資料庫、快取、Zookeeper)分散式資料庫快取
- SpringBoot+Redis實現介面級別快取資訊Spring BootRedis快取
- SpringBoot2 整合JTA元件,多資料來源事務管理Spring Boot元件