首先,需要在pom.xml文件中添加Redis依赖:
org.springframework.boot spring-boot-starter-data-redis
这个依赖包含了Spring Data Redis,以及Jedis和Lettuce这两种Redis客户端的实现。
在SpringBoot项目中,可以通过在application.properties或application.yml文件中配置Redis连接信息。以下是一个示例:
spring: redis: host: localhost port: 6379 password: mypassword timeout: 3000 database: 0
其中,host和port分别是Redis服务器的地址和端口号,password是Redis的密码(如果没有密码,可以不填),timeout是Redis连接超时时间,jedis.pool是连接池的相关设置。
使用Spring Data Redis操作Redis,通常会使用RedisTemplate类。为了方便起见,我们可以创建一个工具类来管理RedisTemplate的创建和使用。以下是一个示例:
package com.redisTest.system.utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.Set; import java.util.concurrent.TimeUnit; /** * @author luft-mensch */ @Component public class RedisUtils { /** * 如果使用 @Autowired 注解完成自动装配 那么 * RedisTemplate要么不指定泛型,要么泛型 为或者
在这个示例中,我们使用@Resource注解自动注入了一个RedisTemplate
需要注意的是,在使用RedisTemplate时,需要指定键值对的类型。在这个示例中,我们指定了键的类型为String,值的类型为Object。
注意:
* 如果使用 @Autowired 注解完成自动装配
* 那么 RedisTemplate要么不指定泛型,要么泛型 为
* 如果你使用其他类型的 比如RedisTemplate
* 那么请使用 @Resource 注解,否则会报以下错误:RedisTemplate 注入失败
Description: Field redisTemplate in com.redisTest.system.utils.RedisUtils required a bean of type 'org.springframework.data.redis.core.RedisTemplate' that could not be found. The injection point has the following annotations: - @org.springframework.beans.factory.annotation.Autowired(required=true) Action: Consider defining a bean of type 'org.springframework.data.redis.core.RedisTemplate' in your configuration. 进程已结束,退出代码1
在上面的示例中,我们已经创建了一个RedisTemplate对象,并提供了一些方法来对Redis进行操作。现在,我们可以在SpringBoot项目中的任何地方使用这个工具类来进行缓存操作。以下是一个示例
@RestController public class UserController { @Autowired private RedisUtils redisUtils; @Autowired private UserService userService; @GetMapping("/users/{id}") public User getUserById(@PathVariable Long id) { String key = "user_" + id; User user = (User) redisUtils.getValue(key); if (user == null) { user = userService.getUserById(id); redisUtils.cacheValue(key, user); } return user; } }
在这个示例中,我们创建了一个UserController类,用于处理HTTP请求。在getUserById方法中,我们首先构造了一个缓存的key,然后使用redisUtils.getValue方法从Redis中获取缓存数据。如果缓存中没有数据,我们调用userService.getUserById方法从数据库中获取数据,并使用redisUtils.cacheValue方法将数据存入Redis缓存中。最后,返回获取到的数据。
通过这个示例,我们可以看到,在SpringBoot项目中使用Redis作为缓存的流程。我们首先需要添加Redis依赖,然后在配置文件中配置Redis连接信息。接着,我们创建了一个RedisUtils工具类来管理RedisTemplate的创建和使用。最后,我们在控制器中使用RedisUtils来对Redis进行缓存操作。
Redis 使用过程中可能会遇到 key 和 value 乱码的现象存在,具体解决方法见: