美文网首页
RedisTemplate - 常用集合之opsFor系列

RedisTemplate - 常用集合之opsFor系列

作者: 清远_03d9 | 来源:发表于2022-10-01 21:26 被阅读0次

    链接

    一、opsForValue

    简单的Key-Value操作

    1、set(K key, V value)

    该方法是向Redis新增一个key-value,由方法参数可知k-v可以是泛型,也就是说我们k-v不一定要是传统的String-String,还可以是Object-Object。

    redisTemplate.opsForValue().set("lcy",'lcy');
    User user1 = new User("柳成荫",22);
    User user2 = new User("柳成荫",22);
    User user3 = new User("九月清晨",23);
    redisTemplate.opsForValue().set(user1,user3);
    

    2、get(Object key)

    该方法就从Redis中取key对应的value

    // 沿用上面的代码
    redisTemplate.opsForValue().get("lcy");
    // 以对象为key的,只要对象属性全都相同就可以获取到
    redisTemplate.opsForValue().get(user2);
    

    3、set(K key, V value, long timeout, TimeUnit unit)

    该方法在原有的set基础上增加了过期时间,即设定一个时间,过了这个时间,这对key-value就会被Redis删除

    // 300秒后过期
    redisTemplate.opsForValue().set("lcy","lcy",300,TimeUnit.SECONDS);
    

    4、其他不常用的方法

    其他不常用的方法可以参考:opsForValue使用说明

    二、opsForList

    针对List集合的相关操作。

    1、leftPush(K key, V value)

    向集合左边添加元素值

    // 添加完之后,在list中是这样的:[c,b,a]
    redisTemplate.opsForList().leftPush("list","a");
    redisTemplate.opsForList().leftPush("list","b");
    redisTemplate.opsForList().leftPush("list","c");
    

    2、leftPushAll(K key, V …values)

    向集合左边批量添加元素,参数可以是数组、多参数、集合

    // 整个过程完之后,list中是这样的:[3,2,1,a]
    redisTemplate.opsForList().leftPush("list","a");
    List list  = new LinkedList();
    list.add("1");
    list.add("2");
    list.add("3");
    redisTemplate.opsForList().leftPushAll("list",list);
    

    3、leftPop(K key)

    移除集合左边的第一个元素并返回这个元素

    redisTemplate.opsForList().leftPush("list","a");
    redisTemplate.opsForList().leftPush("list","b");
    // 移除之后,str为b,list中剩余元素为:a
    String str = redisTemplate.opsForList().leftPop("list");
    既然有左边的操作,那肯定也有右边的操作,即把上诉方法的left改成right即可。
    

    4、其他不常用的方法

    其他不常用的方法可以参考:opsForList使用说明

    三、opsForHash

    针对Hash类型的相关操作。

    1、put(H key, HK hashKey, HV value)

    这是新增一个Hash值,key为外层的Hash的key值,hashKey为内层Hash的key值,value为内层Hash的key对应的value。也就是说hashKey-value就是key的value。

    // 下面代码表示key值为hashKey的里面存入两个hash类型(hash1、hash2)
    redisTemplate.opsForHash().put("hashKey","hash1","hash1-value");
    redisTemplate.opsForHash().put("hashKey","hash2","hash2-value");
    

    2、get(H key, Object hashKey)

    获取内层hashKey对应的value

    Object hashValue = redisTemplate.opsForHash().get("hashKey","hash1");
    

    3、values(H key)

    获取外层Key的存储的所有hash,并将其封装在一个Map对象返回。

    // 这个map里就存在着hash1和hash1-value、hash2和hash2-value
    Map hashKey = redisTemplate.opsForHash().entries("hashKey");
    

    4、hasKey(H key, Object hashKey)

    该方法是判断Key中是否存在hashKey这个键值对。

    Boolean hasKey = redisTemplate.opsForHash().hasKey("hashKey", "hash1");
    

    5、keys(H key)、entries(H key)

    前者获取所有key,后者获取所有key对应的value

    List hashKey1 = redisTemplate.opsForHash().values("hashKey");
    System.out.println(hashKey1);
    Set hashKey2 = redisTemplate.opsForHash().keys("hashKey");
    System.out.println(hashKey2);
    

    6、size(H key)

    获取Hash的长度。

    long hashLength = redisTemplate.opsForHash().size("hashKey");
    

    7、putAll(H key, Map<? extends HK,? extends HV> m)

    以Map集合的形式添加键值对。

    Map map = new HashMap();
    map.put("lcy","lcy");
    map.put("jyqc","jyqc");
    redisTemplate.opsForHash().putAll("hashKey",map);
    

    8、其他不常用方法

    其他不常用的方法可以参考:opsForHash的使用

    四、opsForSet

    针对Set类型的相关操作。

    1、add(K key, V… values)

    向key对应的value值中批量添加值,可以是集合、数组、多参数

    List list = new ArrayList();
    list.add("lcy");
    list.add("jyqc");
    redisTemplate.opsForSet().add("Set",list);
    

    2、members(K key)

    获取key对应的value

    Set set = redisTemplate.opsForSet().members("Set");
    

    3、size(K key)

    获取key对应的值的长度。

    Long set1 = redisTemplate.opsForSet().size("Set");
    

    4、isMember(K key, Object o)

    检查给定的元素是否在Set变量中。

    Boolean member = redisTemplate.opsForSet().isMember("Set", "lcy");
    

    5、pop(K key)

    弹出变量中的元素。

    Object set2 = redisTemplate.opsForSet().pop("Set");
    

    6、remove(K key, Object… values)

    批量移除元素。可以是集合、数组、多参数

    Long set3 = redisTemplate.opsForSet().remove("Set", list);
    

    7、randomMember(K key)

    随机获取变量中的一个元素。

    Object set4 = redisTemplate.opsForSet().randomMember("Set");
    

    8、randomMembers(K key, long count)

    随机获取变量中的count个元素。

    List set5 = redisTemplate.opsForSet().randomMembers("Set",5);
    

    9、delete(H key, Object… hashKeys)

    删除Key变量中的键值对,可以传入多个参数,删除多个键值对。可以是集合、数组、多参数

    redisTemplate.opsForHash().delete("hashKey",list);
    

    10、其他不常用的方法

    其他不常用的方法可以参考:opsForSet的使用

    五、opsForZSet

    针对ZSet的相关操作。zSet也是一种集合,根据score分数进行从小到大排序

    1、add(K key, V value, double score)

    添加元素到变量中同时指定元素的分值。

    // 排序结果为:[A,D,B,C]
    redisTemplate.opsForZSet().add("zSetKey","A",1);
    redisTemplate.opsForZSet().add("zSetKey","B",3);
    redisTemplate.opsForZSet().add("zSetKey","C",5);
    redisTemplate.opsForZSet().add("zSetKey","D",2);
    

    2、range(K key, long start, long end)

    获取变量指定区间的元素,从下标0开始。

    // 获取的结果为[A,D,B]
    Set zSetKey = redisTemplate.opsForZSet().range("zSetKey", 0, 2);
    System.out.println(zSetKey);
    

    3、score(K key, Object o)

    获取元素的分值。

    Double score = redisTemplate.opsForZSet().score("zSet", "B");
    

    4、其他方法

    其他的方法可以参考:opsForZSet的用法

    六、所有的键值对都可以通过delete删除

    // 删除一个Key
    redisTemplate.delete("hashKey");
    // 删除多个Key - 可以是集合、数组、多参数
    redisTemplate.delete(list);
    

    相关文章

      网友评论

          本文标题:RedisTemplate - 常用集合之opsFor系列

          本文链接:https://www.haomeiwen.com/subject/hlvsirtx.html