Spring-data-redis操作redis知识总结

什么是spring-data-redis

spring-data-redis是spring-data模块的一部分,专门用来支持在spring管理项目对redis的操作;使用java操作redis最常用的是使用jedis,但并不是只有jedis可以使用,像jdbc-redis,jredis也都属于redis的java客户端,他们之间是无法兼容的,如果你在一个项目中使用了jedis,然后后来决定弃用掉改用jdbc-redis就比较麻烦了,spring-data-redis提供了redis的java客户端的抽象,在开发中可以忽略掉切换具体的客户端所带来的影响,而且他本身就属于spring的一部分,比起单纯的使用jedis,更加稳定.管理起来更加自动化.(当然jedis的缺点不止以上);

spring-data-redis的特性

      1.自动管理连接池,提供了一个高度封装的RedisTemplate类

      2.针对jedis客户端的大量api进行了归类封装,把同一类型的操作封装成了Operation接口.支持redis中的五种数据类型的操作.

  3.针对数据的"序列化与反序列化",提供了多种可以选择的策略(RedisSerializer)

            JdkSerializationRedisSerializer:当需要存储java对象时使用.

            StringRedisSerializer:当需要存储string类型的字符串时使用.

            JacksonJsonRedisSerializer:将对象序列化成json的格式存储在redis中,需要jackson-json工具的支持;

使用spring-data-redis

注意:如果需要向redis内存储pojo对象,那么该对象必须要实现Serializable接口,因为在redis中存储pojo类仍然存储的是string,它会把数据转化成byte[]数组的形式,在存取的时候就要对数据格式进行转化,就涉及到了序列化与反序列化.

public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    /** 用户ID */
    private Long id;

    /** 用户名 */
    private String name;

    /** 用户年龄 */
    private Integer age;
}
@Controller
public class UserController extends BaseController {

    @Autowired
    private IUserService userService;

    @Autowired
    private RedisTemplate<String,User> redisTemplate;

    @ResponseBody
    @RequestMapping("/redis")
    public Object redis() {

        User u1=new User();
        u1.setId(1L);
        u1.setName("wang");
        u1.setAge(22);
        redisTemplate.opsForValue().set("user:wang",u1);

        User u2=redisTemplate.opsForValue().get("user:wang");
        return u2;
    }
}

 

posted on 2020-07-08 11:01  lidongsheng  阅读(995)  评论(0编辑  收藏  举报

导航