导入依赖
<!--redis依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
application.yml
spring:
redis:
port: 6379
host: 127.0.0.1
User
因为涉及到数据的网络传输(IO),要求实体类实现序列化接口
UserService
//继承Mybatis-plus提供的基础接口,IService接口,封装了service需要的基础的CRUD方法
public interface UserService extends IService<User> {
User SelectById(Long id);
}
@Service
@Transactional
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Autowired
RedisTemplate redisTemplate;
@Override
public User SelectById(Long id) {
//1.判断id是否为空
if (id == null) {
return null;
}
//2.去缓存中获取数据
//操作string类型
redisTemplate.opsForValue();
//操作hash类型
redisTemplate.opsForHash();
//操作list类型
redisTemplate.opsForList();
//操作set类型
redisTemplate.opsForSet();
User user = (User) redisTemplate.opsForValue().get("id=" + id);
if (user != null) {
return user;
}
//3.缓存中没有数据,去数据组中获取(getBaseMapper获取到的就是UserMapper)
User dbUser = this.getBaseMapper().selectById(id);
//4.缓存到数据库
redisTemplate.opsForValue().set("id="+dbUser.getId(),dbUser);
return dbUser;
}
}
模板对象
| 模板对象 | 序列化方式 | 序列化效果 |
|---|---|---|
| RedisTemplate | JdkSerializationRedisSerializer | |
| StringRedisTemplate | StringRedisSerializer |
@Override
public String selectByStrRedis(Long id) throws JsonProcessingException {
//1.判断id是否为空
if (id == null) {
return null;
}
//jackson用于解析数据
ObjectMapper objectMapper = new ObjectMapper();
//2.去缓存中获取数据
String user = stringRedisTemplate.opsForValue().get("id=" + id);
if (user != null) {
return user;
}
//3.缓存中没有数据,去数据组中获取(getBaseMapper获取到的就是UserMapper)
String dbUser = objectMapper.writeValueAsString(this.getBaseMapper().selectById(id));
//4.缓存到数据库
stringRedisTemplate.opsForValue().set("id="+id, dbUser);
return dbUser;
}