环境配置 pom.xml

注意匹配data-redis和jedis的版本问题, 如果出现问题可以检查是否是版本冲突

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-parent</artifactId>
  8. <version>2.4.5</version>
  9. <relativePath/> <!-- lookup parent from repository -->
  10. </parent>
  11. <groupId>top.zhengxin1024</groupId>
  12. <artifactId>redis</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <name>redis</name>
  15. <description>Redis in Java8</description>
  16. <properties>
  17. <java.version>1.8</java.version>
  18. </properties>
  19. <dependencies>
  20. <dependency>
  21. <groupId>org.springframework.boot</groupId>
  22. <artifactId>spring-boot-starter-data-redis</artifactId>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.springframework.boot</groupId>
  26. <artifactId>spring-boot-starter-web</artifactId>
  27. </dependency>
  28. <dependency>
  29. <groupId>org.projectlombok</groupId>
  30. <artifactId>lombok</artifactId>
  31. <optional>true</optional>
  32. </dependency>
  33. <dependency>
  34. <groupId>org.springframework.boot</groupId>
  35. <artifactId>spring-boot-starter-test</artifactId>
  36. <scope>test</scope>
  37. </dependency>
  38. <!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
  39. <dependency>
  40. <groupId>redis.clients</groupId>
  41. <artifactId>jedis</artifactId>
  42. <version>3.5.2</version>
  43. </dependency>
  44. <dependency>
  45. <groupId>junit</groupId>
  46. <artifactId>junit</artifactId>
  47. <version>4.12</version>
  48. <scope>test</scope>
  49. </dependency>
  50. </dependencies>
  51. <build>
  52. <plugins>
  53. <plugin>
  54. <groupId>org.springframework.boot</groupId>
  55. <artifactId>spring-boot-maven-plugin</artifactId>
  56. <configuration>
  57. <excludes>
  58. <exclude>
  59. <groupId>org.projectlombok</groupId>
  60. <artifactId>lombok</artifactId>
  61. </exclude>
  62. </excludes>
  63. </configuration>
  64. </plugin>
  65. </plugins>
  66. </build>
  67. </project>

变量配置application.yml

  1. spring:
  2. redis:
  3. database: 0
  4. host: 127.0.0.1
  5. port: 6379
  6. password: # 如果未单独配置默认为空即可
  7. timeout: 1000
  8. jedis:
  9. pool:
  10. max-active: 8
  11. max-wait: -1
  12. max-idle: 8
  13. min-idle: 0

IDEA中下载redis插件进行可视化处理

image.png
一个月试用,5美金买断
下载后简单配置连接至本地已启动的redis服务器
image.png

包装Redis工具类

由于RedisTemplate里的API比较繁杂,且不够统一,可以考虑额外写一个工具类,并且针对业务进行修改。
使用接口+实现类或单纯的写一个Util类解决问题
RedisUtil.java,此处简单重写了set,getset,get,delete,expire和getExpire方法。

  1. package top.zhengxin1024.redis.util;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.data.redis.core.RedisTemplate;
  4. import org.springframework.stereotype.Component;
  5. import java.util.concurrent.TimeUnit;
  6. /**
  7. * @Package: top.zhengxin1024.redis.util
  8. * @Description: Wrap the RedisTemplate to simply the general API
  9. * @Author: Xin Zheng
  10. * @Date: 2021 2021/4/21 13:52
  11. */
  12. @Component
  13. public class RedisUtil {
  14. @Autowired
  15. private RedisTemplate<String,String> redisTemplate;
  16. public boolean set(final String key, String value){
  17. boolean result = false;
  18. try{
  19. redisTemplate.opsForValue().set(key,value);
  20. result = true;
  21. } catch (Exception e){
  22. e.printStackTrace();
  23. }
  24. return result;
  25. }
  26. public String get(final String key){
  27. return redisTemplate.opsForValue().get(key);
  28. }
  29. public boolean getAndSet(final String key, String value){
  30. boolean result = false;
  31. try{
  32. redisTemplate.opsForValue().getAndSet(key,value);
  33. result = true;
  34. } catch (Exception e){
  35. e.printStackTrace();
  36. }
  37. return result;
  38. }
  39. public boolean delete(final String key){
  40. boolean result = false;
  41. try{
  42. redisTemplate.delete(key);
  43. result = true;
  44. } catch (Exception e){
  45. e.printStackTrace();
  46. }
  47. return result;
  48. }
  49. public boolean expire(String key, long time){
  50. boolean result = false;
  51. try{
  52. if (time>0){
  53. redisTemplate.expire(key,time, TimeUnit.SECONDS);
  54. }
  55. result = true;
  56. } catch (Exception e){
  57. e.printStackTrace();
  58. }
  59. return result;
  60. }
  61. public Long getExpire(String key){
  62. return redisTemplate.getExpire(key);
  63. }
  64. }

简单的测试工具类

RedisUtilTest.java

  1. package top.zhengxin1024.redis.util;
  2. import org.junit.jupiter.api.AfterEach;
  3. import org.junit.jupiter.api.BeforeEach;
  4. import org.junit.jupiter.api.Test;
  5. import org.junit.runner.RunWith;
  6. import org.springframework.boot.test.context.SpringBootTest;
  7. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
  8. import javax.annotation.Resource;
  9. import static org.junit.jupiter.api.Assertions.*;
  10. /**
  11. * @Package: top.zhengxin1024.redis.util
  12. * @Description:
  13. * @Author: Xin Zheng
  14. * @Date: 2021 2021/4/21 14:03
  15. */
  16. @SpringBootTest
  17. @RunWith(SpringJUnit4ClassRunner.class)
  18. class RedisUtilTest {
  19. @Resource
  20. private RedisUtil redisUtil;
  21. @BeforeEach
  22. void setUp() {
  23. redisUtil.set("default","default");
  24. }
  25. @AfterEach
  26. void tearDown() {
  27. System.out.println(redisUtil.getExpire("default"));
  28. }
  29. @Test
  30. void set() {
  31. redisUtil.set("test_Key","test_Value");
  32. }
  33. @Test
  34. void get() {
  35. System.out.println(redisUtil.get("test_Key"));
  36. }
  37. @Test
  38. void getAndSet() {
  39. redisUtil.getAndSet("test_Key","new_test_Value");
  40. System.out.println(redisUtil.get("test_Key"));
  41. }
  42. @Test
  43. void delete() {
  44. System.out.println(redisUtil.delete("test_Key"));
  45. }
  46. @Test
  47. void expire(){
  48. redisUtil.expire("default",30);
  49. }
  50. }

测试后也可在GUI窗口查看具体的键值对,确认是否正确
image.png

额外的配置内容

在application.yml中配置了最基本的参数,如果有复杂的参数配置,考虑到修改和可读性,应使用java文件进行配置。配置方法与配置myBatis, spring等框架类似,不在此处赘述。

总结

redis在springboot中集成简便,但需要针对本身的API进行封装。操作灵活,测试简易,便于理解。