环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE
前言
Redis 是一种高效的非关系型数据库,能够支持复杂的数据结构和操作。在 Spring Boot 应用中,集成 Redis 可以提供更好的性能和扩展性。本文将介绍如何在 Spring Boot 应用中集成 Redis 并使用其基本功能。
摘要
本文将分为以下几个部分:
- Redis 集成介绍
- Redis 常用操作介绍
- Spring Boot 中 Redis 集成实现
- Redis 使用方法
- 测试用例
- 全文小结
Redis 集成介绍
Redis 简介
Redis(Remote Dictionary Server)是一种开源的、高性能的键值对存储数据库。Redis 的出色性能和完善的功能使得它成为最受欢迎的 NoSQL 数据库之一。
Redis 支持多种数据结构,包括字符串、哈希表、列表、集合、有序集合等。Redis 提供了多种操作命令,能够用于对数据结构进行增删改查等操作。
Redis 优点
Redis 具有以下优点:
- 性能优异:Redis 内置了多种优化机制,能够提供非常高的读写速度。
- 数据结构丰富:Redis 支持多种数据结构,包括字符串、哈希表、列表、集合、有序集合等。
- 持久化支持:Redis 支持多种持久化方式,包括 RDB 持久化和 AOF 持久化。
- 高并发支持:Redis 内置了多种高并发支持机制,能够有效地应对高并发访问。
- 分布式支持:Redis 支持分布式架构,能够轻松应对大规模数据存储需求。
Redis 常用操作介绍
Redis 提供多种命令,能够对数据进行增删改查等操作。下面介绍 Redis 中常用的命令:
- SET key value:设置 key 对应的值为 value。
- GET key:获取 key 对应的值。
- DEL key:删除 key 对应的值。
- INCR key:将 key 对应的值加一。
- DECR key:将 key 对应的值减一。
- EXISTS key:判断 key 是否存在。
- KEYS pattern:根据 pattern 获取匹配的 keys。
- HSET key field value:将 key 对应的哈希表中 field 对应的值设置为 value。
- HGET key field:获取 key 对应的哈希表中 field 对应的值。
- HDEL key field:删除 key 对应的哈希表中 field 对应的值。
- LPUSH key value:将 value 插入到 key 对应的列表的左侧。
- RPUSH key value:将 value 插入到 key 对应的列表的右侧。
- LPOP key:弹出并返回 key 对应的列表的左侧元素。
- RPOP key:弹出并返回 key 对应的列表的右侧元素。
- SADD key member:将 member 加入到 key 对应的集合中。
- SMEMBERS key:返回 key 对应的集合中的所有成员。
Spring Boot 中 Redis 集成实现
Spring Boot 已经提供了 Redis 的集成支持,只需要引入相应的依赖后进行配置即可使用 Redis。下面介绍 Redis 在 Spring Boot 中的集成实现。
引入依赖
在 pom.xml 文件中加入以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
配置 Redis
在 application.properties 文件中进行 Redis 配置,例如:
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=yourpassword
使用 RedisTemplate
Spring Boot 提供了 RedisTemplate 用于对 Redis 进行操作。可以通过构造方法或者注入方式进行 RedisTemplate 的创建,并进行相应操作。
我们先来创建一个 RedisTemplate 对象:
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setConnectionFactory(redisConnectionFactory);
redisTemplate.setDefaultSerializer(new StringRedisSerializer());
return redisTemplate;
}
}
上述代码中通过 @Bean 注解创建了一个 RedisTemplate 对象,并对其进行了一些基本配置。
Redis 基本操作
下面介绍 Redis 中基本的操作方法:
set 方法
redisTemplate.opsForValue().set("key", "value");
get 方法
String value = (String) redisTemplate.opsForValue().get("key");
判断 key 是否存在
boolean exists = redisTemplate.hasKey("key");
删除 key
redisTemplate.delete("key");
setnx 方法:如果 key 不存在,则设置 key 对应的值为 value
redisTemplate.opsForValue().setIfAbsent("key", "value");
Redis 高级操作
下面介绍 Redis 中的高级操作方法。
list 方法
public void testList() {
String key = "list";
// 在列表的左侧插入元素
redisTemplate.opsForList().leftPush(key, "value1");
redisTemplate.opsForList().leftPush(key, "value2");
redisTemplate.opsForList().leftPush(key, "value3");
// 获取指定范围内的列表元素
List list = redisTemplate.opsForList().range(key, 0, -1);
System.out.println(list);
// 弹出列表的左侧元素
String value = (String) redisTemplate.opsForList().leftPop(key);
System.out.println(value);
// 获取列表长度
Long size = redisTemplate.opsForList().size(key);
System.out.println(size);
}
hash 方法
public void testHash() {
String key = "hash";
// 设置哈希表中的域值
redisTemplate.opsForHash().put(key, "field1", "value1");
redisTemplate.opsForHash().put(key, "field2", "value2");
redisTemplate.opsForHash().put(key, "field3", "value3");
// 获取所有哈希表中的域值
Map map = redisTemplate.opsForHash().entries(key);
System.out.println(map);
// 获取指定哈希表的指定域值
Object value = redisTemplate.opsForHash().get(key, "field1");
System.out.println(value);
// 删除哈希表中的一个或多个域值
redisTemplate.opsForHash().delete(key, "field1", "field2");
}
set 方法
public void testSet() {
String key = "set";
// 向集合中添加元素
redisTemplate.opsForSet().add(key, "value1");
redisTemplate.opsForSet().add(key, "value2");
redisTemplate.opsForSet().add(key, "value3");
// 获取集合中的所有元素
Set set = redisTemplate.opsForSet().members(key);
System.out.println(set);
// 删除集合中的一个或多个元素
redisTemplate.opsForSet().remove(key, "value1", "value2");
}
Redis 使用方法
下面介绍如何在 Spring Boot 应用中进行 Redis 使用。
创建 RedisTemplate
可以通过构造方法或者注入方式进行 RedisTemplate 的创建。
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setConnectionFactory(redisConnectionFactory);
redisTemplate.setDefaultSerializer(new StringRedisSerializer());
return redisTemplate;
}
上述代码中通过 @Bean 注解创建了一个 RedisTemplate 对象,并对其进行了一些基本配置。
Redis 基本操作
下面介绍 Redis 中基本的操作方法。
set 方法
redisTemplate.opsForValue().set("key", "value");
get 方法
String value = (String) redisTemplate.opsForValue().get("key");
判断 key 是否存在
redisTemplate.hasKey(key);
删除key
redisTemplate.delete(key);
刷新缓存时间
redisTemplate.expire(key, time, TimeUnit.SECONDS);
实际运用如下:
获取key的过期时间
redisTemplate.getExpire(key);
实际运用如下:
测试用例
为了验证 Redis 的使用效果,我们可以编写相关的测试用例。下面是一个简单的测试用例,用于测试 Redis 中基本方法的使用。
@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisTest {
@Autowired
private RedisTemplate redisTemplate;
@Test
public void testSetAndGet() {
redisTemplate.opsForValue().set("testKey", "testValue");
String value = (String) redisTemplate.opsForValue().get("testKey");
Assert.assertEquals("testValue", value);
}
@Test
public void testExists() {
redisTemplate.opsForValue().set("testKey", "testValue");
boolean exists = redisTemplate.hasKey("testKey");
Assert.assertTrue(exists);
}
@Test
public void testDelete() {
redisTemplate.opsForValue().set("testKey", "testValue");
redisTemplate.delete("testKey");
boolean exists = redisTemplate.hasKey("testKey");
Assert.assertFalse(exists);
}
}
上述测试用例中,我们先通过 set 方法设置了一个键值对,然后使用 get 方法获取值并进行断言。接着使用 hasKey 方法判断该键是否存在,并进行断言。最后使用 delete 方法删除该键值对,并使用 hasKey 方法判断该键是否存在,进行断言。
全文小结
本文介绍了 Redis 的基本概念和常用操作方法,同时介绍了在 Spring Boot 应用中集成 Redis 的实现方法。同时,我们还编写了相关的测试用例,用于验证 Redis 的使用效果。希望本文能够帮助读者了解 Redis 和 Spring Boot 中 Redis 的使用方法。
附录源码
如上涉及所有源码均已上传同步在「GitHub」,提供给同学们一对一参考学习,辅助你更迅速的掌握。
总结
本文介绍了 Redis 的基本概念和常用操作方法,同时介绍了在 Spring Boot 应用中集成 Redis 的实现方法。Redis 是一种高效的非关系型数据库,支持多种数据结构和操作命令,能够提供非常高的读写速度和多种持久化方式。通过引入相应的依赖和配置,在 Spring Boot 应用中可以轻松集成 Redis 并使用其基本功能。本文还编写了相关的测试用例,用于验证 Redis 的使用效果。读者可以通过本文了解 Redis 和 Spring Boot 中 Redis 的使用方法
标签:Boot,Spring,Redis,value,RedisTemplate,key,redisTemplate From: https://blog.51cto.com/u_15700751/7974936