springboot整合redis及常用命令
在pom.xml
文件中添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
在application.properties
或application.yml
中配置Redis连接信息:
spring.redis.host=127.0.0.1
spring.redis.port=6379
完成以上配置后,你可以使用Spring的RedisTemplate
或StringRedisTemplate
来操作Redis。下面是一些常用的Redis命令及其在Spring Boot中的使用示例:
1. 设置键值对:
@Autowired
private RedisTemplate<String, String> redisTemplate;
public void set(String key, String value) {
redisTemplate.opsForValue().set(key, value);
}
2. 获取键对应的值:
public String get(String key) {
return redisTemplate.opsForValue().get(key);
}
3. 设置键的过期时间:
public void expire(String key, long timeout, TimeUnit unit) {
redisTemplate.expire(key, timeout, unit);
}
4. 删除键:
public void delete(String key) {
redisTemplate.delete(key);
}
5. 发布订阅消息:
@Autowired
private RedisTemplate<String, String> redisTemplate;
public void publish(String channel, String message) {
redisTemplate.convertAndSend(channel, message);
}
更多操作
-
列表操作:
- 在列表的左侧或右侧插入元素:
redisTemplate.opsForList().leftPush(key, value)
、redisTemplate.opsForList().rightPush(key, value)
- 获取列表指定范围的元素:
redisTemplate.opsForList().range(key, start, end)
- 弹出列表的左侧或右侧元素:
redisTemplate.opsForList().leftPop(key)
、redisTemplate.opsForList().rightPop(key)
- 在列表的左侧或右侧插入元素:
-
集合操作:
- 添加元素到集合:
redisTemplate.opsForSet().add(key, values)
- 获取集合中的所有元素:
redisTemplate.opsForSet().members(key)
- 判断元素是否在集合中:
redisTemplate.opsForSet().isMember(key, value)
- 添加元素到集合:
-
哈希操作:
- 设置哈希字段和值:
redisTemplate.opsForHash().put(key, field, value)
- 获取哈希字段对应的值:
redisTemplate.opsForHash().get(key, field)
- 获取哈希中所有字段和值的映射:
redisTemplate.opsForHash().entries(key)
- 设置哈希字段和值:
-
有序集合操作:
- 添加元素到有序集合:
redisTemplate.opsForZSet().add(key, value, score)
- 获取有序集合中指定范围的元素:
redisTemplate.opsForZSet().range(key, start, end)
- 获取有序集合中指定分数范围的元素:
redisTemplate.opsForZSet().rangeByScore(key, min, max)
- 添加元素到有序集合:
-
事务操作:
- 开启事务:
redisTemplate.multi()
- 提交事务:
redisTemplate.exec()
- 回滚事务:
redisTemplate.discard()
- 开启事务:
示例代码:
// 设置列表元素
redisTemplate.opsForList().leftPush("mylist", "element1");
redisTemplate.opsForList().rightPush("mylist", "element2");
// 获取列表范围内的元素
List<String> elements = redisTemplate.opsForList().range("mylist", 0, -1);
// 添加元素到集合
redisTemplate.opsForSet().add("myset", "element1");
redisTemplate.opsForSet().add("myset", "element2");
// 获取集合中的所有元素
Set<String> members = redisTemplate.opsForSet().members("myset");
// 设置哈希字段和值
redisTemplate.opsForHash().put("myhash", "field1", "value1");
redisTemplate.opsForHash().put("myhash", "field2", "value2");
// 获取哈希字段对应的值
String value1 = (String) redisTemplate.opsForHash().get("myhash", "field1");
// 添加元素到有序集合
redisTemplate.opsForZSet().add("myzset", "element1", 1.0);
redisTemplate.opsForZSet().add("myzset", "element2", 2.0);
// 获取有序集合指定范围的元素
Set<String> range = redisTemplate.opsForZSet().range("myzset", 0, -1);
// 开启事务
redisTemplate.multi();
// 执行事务操作
redisTemplate.opsForValue().set("key1", "value1");
redisTemplate.opsForValue().set("key2", "value2");
// 提交事务
redisTemplate.exec();