一、SpringData
SpringData是Spring里专门用来操作数据的模块,其中对redis集成的模块
二、SpringDataRedis
它提供了对不同的redis客户端的整合比如Lettuce和Jedis,提供了RedisTemplate统一的API来操作redis,而且它支持Redis的发布订阅模式、哨兵和Redis集群,以及Lettuce的响应式编程,支持序列化于反序列化,支持Redis的JDKCollection实现
三、StringRedisTemplate
对Redis的各种操作进行了封装
API | 返回值 | 说明 |
StringRedisTemplate.opsForValue() | ValueOperations | 操作String类型的数据 |
StringRedisTemplate.opsForHash() | HashOperations | 操作Hash类型的数据 |
StringRedisTemplate.opsForList() | ListOperations | 操作List类型的数据 |
StringRedisTemplate.opsForSet() | SetOperations | 操作Set类型的数据 |
StringRedisTemplate.opsForZSet() | ZsetOperations | 操作SortedSet类型的数据 |
StringRedisTemplate | 通用命令 |
四、SpringBoot整合Redis
1、配置文件
首先我们需要在配置文件里配置连接redis的信息
spring: redis: # Redis????? host: IP # Redis端口 port: 6379 # 数据库 database: 0 # 密码 # password: lettuce: pool: # ????????????????? max-wait: -1 # ??????????? max-idle: 5 # ??????????? min-idle: 0 # ?????????????????? max-active: 20
2、代码编写
开始编写代码
package com.example.demo;
import com.example.demo.model.User;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
import java.util.Map;
@SpringBootTest
@Transactional
public class Test {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Autowired
private ObjectMapper objectMapper;
@org.junit.jupiter.api.Test
void redisHash() {
// 伪代码创建Map类型,作为hash类型存入redis
Map<String,Object> map = new HashMap<>();
map.put("id","1");
map.put("name","admin");
map.put("pass","admin");
// 存入
stringRedisTemplate.opsForHash().putAll("admin1",map);
// 取出
Map<Object,Object> res = stringRedisTemplate.opsForHash().entries("admin1");
System.out.println(res);
}
@org.junit.jupiter.api.Test
void redisValue() throws JsonProcessingException {
// 将对象User作为String类型存入redis
User user = new User(1,"admin","admin");
// 将该对象转为JSON格式
String json = objectMapper.writeValueAsString(user);
// 存入
stringRedisTemplate.opsForValue().set("user",json);
// 取出
String re = stringRedisTemplate.opsForValue().get("user");
// 将json格式转为Java对象
User user1 = objectMapper.readValue(re,User.class);
}
}