• Spring Data Redis概述及用法


    一、概述

    Spring Data Redis中提供了一个高度封装的类:RedisTemplate,针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口

    具体分类如下:

    ValueOperations:简单K-V操作

    SetOperations:set类型数据操作

    ZSetOperations:zset类型数据操作

    HashOperations:针对map类型的数据操作

    ListOperations:针对list类型的数据操作

    在Spring Boot项目中,可以使用Spring Data Redis来简化Redis操作

    maven坐标:

    1. <dependency>
    2. <groupId>org.springframework.bootgroupId>
    3. <artifactId>spring-boot-starter-data-redisartifactId>
    4. dependency>

    二、用法

    1、操作string类型数据

    以string形式向redis添加数据:

    redisTemplate.opsForValue().set("city","shanghai");

    以string形式根据key去redis中拿value:

    1. String city = (String) redisTemplate.opsForValue().get("city");
    2. System.out.println(city); //shanghai

    以string形式向redis添加数据,并设置过期时间:

    redisTemplate.opsForValue().set("name","chendong",10l,TimeUnit.SECONDS);

    向redis中添加不存在的数据,false代表此数据在redis中存在,添加失败:

    1. Boolean aBoolean = redisTemplate.opsForValue().setIfAbsent("city", "shanghai");
    2. System.out.println(aBoolean); //false

    2、操作hash类型数据

    以hash形式向redis添加数据:

    1. redisTemplate.opsForHash().put("001","name", "chendong");
    2. redisTemplate.opsForHash().put("001","age", "20");
    3. redisTemplate.opsForHash().put("001","address", "shanghai");

    以hash形式向redis取数据:

    1. String name = (String) redisTemplate.opsForHash().get("001", "name");
    2. System.out.println(name); //chendong

    以hash形式获取"001"中的所有字段:

    1. Set keys = redisTemplate.opsForHash().keys("001");
    2. for (Object key : keys) {
    3. System.out.print(key+" ");
    4. } //name age address

    以hash形式获取"001"中的所有值:

    1. List values = redisTemplate.opsForHash().values("001");
    2. for (Object value : values) {
    3. System.out.print(value+" ");
    4. } //chendong 20 shanghai

    3、操作List类型数据

    以List形式向redis添加数据:

    1. redisTemplate.opsForList().leftPush("mylist","a"); //存一个
    2. redisTemplate.opsForList().leftPushAll("mylist","b","c","d"); //存多个

    以List形式向redis取数据:

    1. List mylist = redisTemplate.opsForList().range("mylist", 0, -1);
    2. for (String value : mylist) {
    3. System.out.print(value+" ");
    4. } //d c b a

    以List形式获取列表长度:

    int myListValeSize = redisTemplate.opsForList().size("mylist").intValue();

    以List形式向redis清数据(此循环结束后mylist就变空了):

    1. for (int i = 0; i < myListValeSize; i++) {
    2. //出队列
    3. String element = (String) redisTemplate.opsForList().rightPop("mylist");
    4. System.out.print(element+" ");
    5. } //a b c d

    4、操作Set类型数据

    以Set形式向redis添加数据:

    redisTemplate.opsForSet().add("myset","a","b","c","d");

    以Set形式向redis取数据:

    1. Set myset = redisTemplate.opsForSet().members("myset");
    2. for (String s : myset) {
    3. System.out.print(s+" ");
    4. } //a d c b

    以Set形式删除myset成员:

    redisTemplate.opsForSet().remove("myset","a","b");

    5、操作Zset类型数据

    以Zset形式向redis添加数据:

    1. redisTemplate.opsForZSet().add("myZset","a",4.0);
    2. redisTemplate.opsForZSet().add("myZset","b",3.0);
    3. redisTemplate.opsForZSet().add("myZset","c",2.0);
    4. redisTemplate.opsForZSet().add("myZset","d",1.0);

    以Zset形式向redis取数据:

    1. Set myZset = redisTemplate.opsForZSet().range("myZset", 0, -1);
    2. for (String s : myZset) {
    3. System.out.print(s+" ");
    4. } //d c b a

    以Zset形式修改分数:

    redisTemplate.opsForZSet().incrementScore("myZset","d",5.0);

    以Zset形式删除成员:

    redisTemplate.opsForZSet().remove("myZset","a","b");

    6、通用操作,redis五大数据类型都可以操作

    获取redis中所有的key:

    1. Set keys = redisTemplate.keys("*");
    2. for (String key : keys) {
    3. System.out.print(key+" ");
    4. } //myZset

    获取指定key对应的value的数据类型:

    1. DataType myZsetDataType = redisTemplate.type("myZset");
    2. System.out.println(myZsetDataType); //ZSET

    判断某个key是否存在:

    1. Boolean myZset = redisTemplate.hasKey("myZset");
    2. System.out.println(myZset); //true

    删除指定key:

    1. Boolean myZsetDelete = redisTemplate.delete("myZset");
    2. System.out.println(myZsetDelete); //true

    三、案例

    百度网盘链接:

    https://pan.baidu.com/s/1ca97kJc1fsosUg_4VqhfsA 

    提取码:

    1234
  • 相关阅读:
    API接口文档管理系统平台搭建(更新,附系统源码及教程)
    Java之SpringCloud Alibaba【八】【Spring Cloud微服务Gateway整合sentinel限流】
    软件测试工程师面试题汇总
    矩阵分析与计算学习记录-矩阵函数
    Git --》Git与GitHub操作
    Debug一个ECC的ODP数据源
    SpringBoot项目整合RabbitMQ
    MyBatis使用动态SQL用法以及例题
    月光宝盒(vivo流量录制回放平台)正式对外开源
    用DIV+CSS技术设计的红酒主题网站(web前端网页制作课作业)
  • 原文地址:https://blog.csdn.net/weixin_55076626/article/details/127733658