springboot redis 批量查询
- 行业动态
- 2023-12-26
- 2981
简介
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API,在 Spring Boot 项目中,我们可以使用 RedisTemplate 或者 StringRedisTemplate 来操作 Redis 数据,本文将介绍如何在 Spring Boot 项目中批量修改 Redis 数据。
使用 RedisTemplate 批量修改 Redis
1、我们需要在项目中引入 Redis 相关依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
2、在 application.properties 文件中配置 Redis 连接信息:
spring.redis.host=localhost spring.redis.port=6379
3、在项目中创建一个 RedisService 类,用于封装 Redis 操作方法:
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import java.util.concurrent.TimeUnit; @Service public class RedisService { @Autowired private RedisTemplate<String, Object> redisTemplate; /** * set key value with timeout * @param key the key of the Redis object to store in the database * @param value the data object to be stored in the database * @param timeout the time that the key will expire in seconds, optional, default is null, means never expire. */ public void set(String key, Object value, Integer timeout) { redisTemplate.opsForValue().set(key, value, timeout, TimeUnit.SECONDS); } }
4、在需要批量修改 Redis 数据的业务类中,注入 RedisService,然后调用 set 方法进行批量修改:
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Map; import java.util.concurrent.TimeUnit; @Service public class TestService { @Autowired private RedisService redisService; /** * batch set key value with timeout for all keys in map * @param keyValues a map contains key-value pairs to be stored in the database, like {"key1":"value1", "key2":"value2"} * @param timeout the time that the key will expire in seconds, optional, default is null, means never expire. */ public void batchSet(Map<String, Object> keyValues, Integer timeout) { for (Map.Entry<String, Object> entry : keyValues.entrySet()) { redisService.set(entry.getKey(), entry.getValue(), timeout); } } }
使用 StringRedisTemplate 批量修改 Redis(适用于字符串类型的数据)
与 RedisTemplate 类似,我们可以使用 StringRedisTemplate 这个类来操作 Redis,首先需要在项目中引入 RedisStringRedisSerializer:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
然后在配置文件中添加 StringRedisSerializer:
spring.redis.string-serializer=org.springframework.data.redis.serializer.StringRedisSerializer$Instance
接下来,我们可以在 TestService 类中使用 StringRedisTemplate 实现批量修改 Redis:
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import java.util.Map; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.StreamSupport; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import org.springframework.data.redis.core.RedisCallback; import org.springframework.data.redis.core.RedisOperations; import org.springframework.data.redis.core.SessionCallback; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; import org.springframeworktransactionsupport.TransactionSynchronizationManager; // 注意引入此包以支持事务回滚功能(如果需要)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-> 如果需要支持事务回滚功能,请务必引入此包(否则无法实现事务回滚功能)<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<---------------------------------------------------------------------------------------------------> 注意引入此包以支持事务回滚功能(如果需要) <---------------------------------------------------------------------------------------------------<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<---------------------------------------------------------------------------------------------------> 注意引入此包以支持事务回滚功能(如果需要) <---------------------------------------------------------------------------------------------------<<<<<<<<<<<<<<<<<<------------------------------------------------------------------------------------------------------------------------------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>注意:这里使用了 Java8 Stream API 对多个 key 同时进行批量修改操作,如果使用的是 Spring Boot 2 以及更高版本,可以考虑使用 Spring Data Redis 直接进行批量操作。
本站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本站,有问题联系侵删!
本文链接:http://www.xixizhuji.com/fuzhu/273437.html