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

Posted 代码不是马

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
  

打印结果:

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

打印结果:

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

运行结果:

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"));
  

运行结果

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

运行结果:

以上是关于SpringBoot Redis五种数据类型的简单操作的主要内容,如果未能解决你的问题,请参考以下文章

Redis五种数据类型应用场景

[redis]redis五种数据类型和应用场景

Redis五种常用数据类型有哪些?对应的数据存储空间又是怎样的?带你从零开始学习

SpringBoot-- 整合Redis

redis数据类型--简单测试

Redis的五种数据结构及其底层实现原理