0
点赞
收藏
分享

微信扫一扫

SpringBoot Redis五种数据类型的简单操作

简单实现SpringBoot集成Redis操作数据类型
Redis共有五种数据类型:

  1. string字符串类型 (字符串、整数或者浮点数)
  2. hash类型 (包含键值对的无序散列表)
  3. list类型 (链表)
  4. set集合类 (无序集合)
  5. sortedSet有序集合 (有序集合)

string操作

  @Test
  public void stringTest(){
    //添加
    redisTemplate.opsForValue().set("test","hello world");
    //获取
    String test = (String) redisTemplate.opsForValue().get("test");
    //设置失效时间
    redisTemplate.opsForValue().getOperations().expire("test",10,TimeUnit.SECONDS);
    //删除
    redisTemplate.delete("test");
    log.info("test:{}",test);
  }

打印结果:
image.png
hash操作

  @Test
  public void hashTest(){
    //添加单个值
    redisTemplate.opsForHash().put("hash","test","test");
    //添加map
    Map<String,Object> map = new HashMap<>();
    map.put("test1","test1");
    map.put("test2","test2");
    map.put("test3","test3");
    redisTemplate.opsForHash().putAll("map",map);
    //获取单个值
    String test = (String) redisTemplate.opsForHash().get("hash", "test");
    //获取整个散列值
    Map<Object, Object> map1 = redisTemplate.opsForHash().entries("map");
    log.info("单个值:{}",test);
    log.info("整个散列值:{}",map1);
  }

打印结果:
image.png
list操作

 @Test
  public void listTest(){
    //从左边插入
    redisTemplate.opsForList().leftPush("list","2");
    redisTemplate.opsForList().leftPush("list","1");
    redisTemplate.opsForList().leftPush("list","0");
    //从右边插入
    redisTemplate.opsForList().rightPush("list","3");
    redisTemplate.opsForList().rightPush("list","4");
    redisTemplate.opsForList().rightPush("list","5");
    //范围取值 0 -1 取全部
    List list = redisTemplate.opsForList().range("list", 0, -1);
    log.info("全部数据list:{}",list);
    String list1 = redisTemplate.opsForList().index("list", 3);
    log.info("下标为三的数据list:{}",list1);
    String list2 = redisTemplate.opsForList().leftPop("list");
    log.info("从左边删除并返回值list:{}",list2);
    String list3 = redisTemplate.opsForList().rightPop("list");
    log.info("从右边删除并返回值list:{}",list3);
    Long list4 = redisTemplate.opsForList().size("list");
    log.info("list长度:{}",list4);
    //设置失效时间
    redisTemplate.opsForList().getOperations().expire("list",10, TimeUnit.SECONDS);
  }

运行结果:
image.png
set操作

  @Test
  public void setTest(){
    //如果数据存在返回0 不存在返回插入数据的个数
    Long add = redisTemplate.opsForSet().add("set", "string", "hash", "list","list");
    //获取集合
    Set<String> set = redisTemplate.opsForSet().members("set");
    //因为set是不可重复的 所以只有一个list
    log.info("获取集合set:{}",set);
    log.info("判断set是否存在:{}",redisTemplate.opsForSet().isMember("set","set"));
    redisTemplate.opsForSet().add("set2", "string", "hash", "set");
    log.info("返回集合的并集:{}",redisTemplate.opsForSet().union("set","set2"));
    log.info("返回集合的交集:{}",redisTemplate.opsForSet().intersect("set","set2"));
    log.info("返回集合set中存在set2中不存在的数据:{}",redisTemplate.opsForSet().difference("set","set2"));
  }

运行结果
image.png
sortedSet

  @Test
  public void sortSet(){
    //与list操作相似
    //添加数据 score代表权重
    redisTemplate.opsForZSet().add("zset","string",1);
    redisTemplate.opsForZSet().add("zset","hash",2);
    redisTemplate.opsForZSet().add("zset","list",3);
    redisTemplate.opsForZSet().add("zset","list",4);//值相会将权重替换掉
    //获取全部的值
    log.info("zset全部的值:{}",redisTemplate.opsForZSet().range("zset",0,-1));
    //获取值对应的score
    log.info("获取list对应的score:{}",redisTemplate.opsForZSet().score("zset","list"));
    //获取值对应排名 从0开始
    log.info("获取list对应的排名:{}",redisTemplate.opsForZSet().rank("zset","list"));
    //根据score范围获取值 score改为时间戳 可实现延时队列
    log.info("根据score范围获取值 :{}",redisTemplate.opsForZSet().rangeByScore("zset",2,3));
  }

运行结果:
image.png

举报

相关推荐

0 条评论