springboot整合Redis

165 阅读1分钟

导入依赖

<!--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;
    }
}

模板对象

模板对象序列化方式序列化效果
RedisTemplateJdkSerializationRedisSerializerimage.png
StringRedisTemplateStringRedisSerializerimage.png
@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;
}