SpringBoot 使用Redis缓存
1. 添加依赖
<!-- redis依赖包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2. Redis数据库连接配置文件
spring:
redis:
database: 0
host: localhost
port: 6379
3. RedisUtils工具类
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
/**
* @Author: zxg
* @Date: Created in 2021/09/05 14:53
* @Description:Redis工具类
*/
@Component
@Slf4j
public class RedisUtils {
@Autowired
private RedisTemplate<String,String> redisTemplate;
/**
* 读取缓存
* @param key key
* @return
*/
public String get(final String key){
return redisTemplate.opsForValue().get(key);
}
/**
* 写入缓存,键值对不过期
* @param key key
* @param value value
* @return
*/
public boolean set(final String key,final String value){
boolean result = false;
try{
redisTemplate.opsForValue().set(key,value);
result = true;
}catch (Exception e){
log.info("redis set key-value ({}:{}) fail, error: [{}]",key,value,e.getMessage(),e);
}
return result;
}
/**
* 写入缓存,设置超时时间
* @param key key
* @param value value
* @param timeout 超时时间
* @param timeUnit 时间单位
* @return
*/
public boolean set(final String key, final String value, long timeout, TimeUnit timeUnit){
boolean result = false;
try{
redisTemplate.opsForValue().set(key,value,timeout,timeUnit);
result = true;
}catch (Exception e){
log.info("redis set key-value ({}:{}) fail, error: [{}]",key,value,e.getMessage(),e);
}
return result;
}
/**
* 更新缓存,通过key来设置vlaue,返回旧value
* @param key
* @param value
* @return
*/
public String getAndSet(final String key, final String value){
String oldValue = null;
try{
oldValue = redisTemplate.opsForValue().getAndSet(key,value);
}catch (Exception e){
log.info("redis set key-value ({}:{}) fail, error: [{}]",key,value,e.getMessage(),e);
}
return oldValue;
}
/**
* 删除缓存
* @param key
* @return
*/
public boolean delete(final String key) {
boolean result = false;
try {
redisTemplate.delete(key);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
4. 单元测试类
import com.study.redis.utils.RedisUtils;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.concurrent.TimeUnit;
/**
* @Author:
* @Date: Created in 2021/09/05 15:08
* @Description: Redis测试类
*/
@SpringBootTest
@Slf4j
@DisplayName("Redis 操作测试")
public class RedisUtilsTest {
@Autowired
private RedisUtils redisUtils;
@Test
@DisplayName("reids get")
void get(){
String key = "a";
String value = redisUtils.get(key);
log.info("value: {}",value);
}
@Test
@DisplayName("redis set")
void set(){
String key = "a";
String value = "123";
boolean result = redisUtils.set(key, value);
if(result){
log.info("redis set key-value ({}:{}) success!",key,value);
}
}
@Test
@DisplayName("redis getAndSet")
void getAndSet(){
String key = "a";
String value = "456";
String result = redisUtils.getAndSet(key, value);
if(result!=null){
log.info("key {} old vlaue : {}" ,key,result);
}
}
@Test
@DisplayName("redis set and timeout")
void setAndTimeOut(){
String key = "b";
String value = "123";
long timeout = 60L;
TimeUnit timeUnit = TimeUnit.SECONDS;
boolean result = redisUtils.set(key, value,timeout,timeUnit);
if(result){
log.info("redis set key-value ({}:{}) success!",key,value);
}
}
@Test
@DisplayName("redis delete key")
void delete(){
String key = "a";
boolean result = redisUtils.delete(key);
if(result){
log.info("redis delete key : {} success!",key);
}
}
}
5. 其他操作
其他操作查看ValueOperations
类