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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM