• RedisTemplate中opsForValue和opsForList方法的使用详解


    一、opsForValue用法

    key:字符串,value:可以是任意对象Object(例如String、具体对象如自定义类Student等),一个key只能对应一个value。
    1)value为String类型示例:

    //赋值方法
    redisTemplate.opsForValue().set("username1","wangxinli");
    redisTemplate.opsForValue().set("username2","yanxiaotang");
    redisTemplate.opsForValue().set("username3","zhangguoshun");
    //取值,返回是String类型
    String str1 = redisTemplate.opsForValue().get("username1");
    String str2 = redisTemplate.opsForValue().get("username2");
    String str3 = redisTemplate.opsForValue().get("username3");
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2)value为其他类对象Object(例如自定义对象)

    //赋值方法
    redisTemplate.opsForValue().set("stu1",new Student(1,"张三",20,"张无忌"));
    redisTemplate.opsForValue().set("stu2",new Student(2,"李四",20,"张真人"));
    //取值,返回是Student类型
    Student stu1 = redisTemplate.opsForValue().get("stu1");
    Student stu2 = redisTemplate.opsForValue().get("stu2");
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    总结:set时value传的是什么类型,get后返回的就是什么类型。

    二、opsForList用法

    key:字符串,value:可以是任意对象Object(例如String、具体对象如自定义类Student等),一个key可以分别先后添加多个value。
    1)value为String类型示例:

    redisTemplate.opsForList().rightPush("user_list","wangxinli");
    redisTemplate.opsForList().rightPush("user_list","yanxiaotang");
    //push时value传的是什么类型,range方法后接受的list<>中就传什么类型
    List<String> lists = redisTemplate.opsForList().range("user_list",0,-1);
    for(String str:lists){
     System.out.println(str);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2)value为其他类对象Object(例如自定义对象)

    //赋值方法
    redisTemplate.opsForList().leftPush("stu_list",new Student(1,"张三",20,"张无忌"));
    redisTemplate.opsForList().leftPush("stu_list",new Student(2,"李四",20,"张真人"));
    /**
    leftPushAll方法的value值为数组或list集合,该方法会将value值一次性全部追加存入到该key
    值对应的内容中;一般情况下同一个key值对应的追加的数据类型要保持一致,像下面那样先
    往stu_list中添加Student对象,再往其中追加list集合或数组,这样的操作不常见,也无必要。
    */
    redisTemplate.opsForList().leftPushAll("stu_list",stuArr);
    //取值,返回是Student类型
    List<Student> lists = redisTemplate.opsForList().range("stu_list",0,-1);
    //遍历
    for(Student stu:lists){
     System.out.println(stu);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    三、RedisTemplate对5种数据结构的操作

    redisTemplate使用如下几种方法分别针对5种数据结构进行操作:

    redisTemplate.opsForValue();//操作字符串 
    redisTemplate.opsForHash();//操作hash 散列
    redisTemplate.opsForList();//操作list 列表
    redisTemplate.opsForSet();//操作set 集合
    redisTemplate.opsForZSet();//操作有序set有序集合
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.1 String字符串操作

    //设置key和value值
    redisTemplate.opsForValue().set("key","value");
    //通过key获取value值
    String result = redisTemplate.opsForValue().get("key").toString();
    
    • 1
    • 2
    • 3
    • 4

    3.2 list数组操作

    //list数组对象和添加数组值
    List<String> list = new ArrayList<String>();  
    list.add("a1");  
    list.add("a2");  
    list.add("a3");  
     
    //用redisTemplate模板类把list数组集合添加进Redis
    redisTemplate.opsForList().leftPush("listkey",list);  
     
    //用redisTemplate模板类从Redis中根据key获取list集合
    List<String> resultList = (List<String>)redisTemplate.opsForList().leftPop("listkey");  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    3.3 Hash结构,map操作

    //定义Map集合和类型
    Map<String,String> map = new HashMap<String,String>();  
    map.put("key1","value1");  
    map.put("key2","value2");  
    map.put("key3","value3");  
     
    //用redis模板类把map设置到redis中
    redisTemplate.opsForHash().putAll("map",map);  
    Map<String,String> resultMap = redisTemplate.opsForHash().entries("map");  
    List<String> reslutMapList = redisTemplate.opsForHash().values("map");  
    Set<String> resultMapSet = redisTemplate.opsForHash().keys("map");  
    String value = (String)redisTemplate.opsForHash().get("map","key1");  
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    3.4 Set集合操作

    //定义一个set集合并设置集合值
    SetOperations<String, String> set = redisTemplate.opsForSet();
    set.add("set1","22");  
    set.add("set1","33");  
    set.add("set1","44");  
    //通过key获取set集合中的对象值
    Set<String> resultSet = redisTemplate.opsForSet().members("set1");  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    好用的WPF开源UI框架项目
    安装WSL2 Ubuntu时提示指定的网络名不再可用
    Shell生成支持x264的ffmpeg安卓全平台so
    k8s的node节点重启后pod不正常运行
    IDEA的Terminal光标太粗了如何调细
    MobPush for Flutter
    docker-compose部署elk(8.9.0)并开启ssl认证
    阿里云服务器x86计算架构ECS实例规格汇总
    Flink同步Kafka数据到ClickHouse分布式表
    分享一个完全免费的GPT4站点,gpts也可以用
  • 原文地址:https://blog.csdn.net/weixin_42258334/article/details/125513582