环境配置 pom.xml
注意匹配data-redis和jedis的版本问题, 如果出现问题可以检查是否是版本冲突
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>top.zhengxin1024</groupId>
<artifactId>redis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>redis</name>
<description>Redis in Java8</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
变量配置application.yml
spring:
redis:
database: 0
host: 127.0.0.1
port: 6379
password: # 如果未单独配置默认为空即可
timeout: 1000
jedis:
pool:
max-active: 8
max-wait: -1
max-idle: 8
min-idle: 0
IDEA中下载redis插件进行可视化处理
一个月试用,5美金买断
下载后简单配置连接至本地已启动的redis服务器
包装Redis工具类
由于RedisTemplate里的API比较繁杂,且不够统一,可以考虑额外写一个工具类,并且针对业务进行修改。
使用接口+实现类或单纯的写一个Util类解决问题
RedisUtil.java,此处简单重写了set,getset,get,delete,expire和getExpire方法。
package top.zhengxin1024.redis.util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
/**
* @Package: top.zhengxin1024.redis.util
* @Description: Wrap the RedisTemplate to simply the general API
* @Author: Xin Zheng
* @Date: 2021 2021/4/21 13:52
*/
@Component
public class RedisUtil {
@Autowired
private RedisTemplate<String,String> redisTemplate;
public boolean set(final String key, String value){
boolean result = false;
try{
redisTemplate.opsForValue().set(key,value);
result = true;
} catch (Exception e){
e.printStackTrace();
}
return result;
}
public String get(final String key){
return redisTemplate.opsForValue().get(key);
}
public boolean getAndSet(final String key, String value){
boolean result = false;
try{
redisTemplate.opsForValue().getAndSet(key,value);
result = true;
} catch (Exception e){
e.printStackTrace();
}
return result;
}
public boolean delete(final String key){
boolean result = false;
try{
redisTemplate.delete(key);
result = true;
} catch (Exception e){
e.printStackTrace();
}
return result;
}
public boolean expire(String key, long time){
boolean result = false;
try{
if (time>0){
redisTemplate.expire(key,time, TimeUnit.SECONDS);
}
result = true;
} catch (Exception e){
e.printStackTrace();
}
return result;
}
public Long getExpire(String key){
return redisTemplate.getExpire(key);
}
}
简单的测试工具类
RedisUtilTest.java
package top.zhengxin1024.redis.util;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.annotation.Resource;
import static org.junit.jupiter.api.Assertions.*;
/**
* @Package: top.zhengxin1024.redis.util
* @Description:
* @Author: Xin Zheng
* @Date: 2021 2021/4/21 14:03
*/
@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
class RedisUtilTest {
@Resource
private RedisUtil redisUtil;
@BeforeEach
void setUp() {
redisUtil.set("default","default");
}
@AfterEach
void tearDown() {
System.out.println(redisUtil.getExpire("default"));
}
@Test
void set() {
redisUtil.set("test_Key","test_Value");
}
@Test
void get() {
System.out.println(redisUtil.get("test_Key"));
}
@Test
void getAndSet() {
redisUtil.getAndSet("test_Key","new_test_Value");
System.out.println(redisUtil.get("test_Key"));
}
@Test
void delete() {
System.out.println(redisUtil.delete("test_Key"));
}
@Test
void expire(){
redisUtil.expire("default",30);
}
}
额外的配置内容
在application.yml中配置了最基本的参数,如果有复杂的参数配置,考虑到修改和可读性,应使用java文件进行配置。配置方法与配置myBatis, spring等框架类似,不在此处赘述。
总结
redis在springboot中集成简便,但需要针对本身的API进行封装。操作灵活,测试简易,便于理解。