redisTemplate 的pop和remove

redis作用不仅仅作为缓存,因为它是单线程的,我们还可以作为原子性操作来保证数据的操作正确性,配合set 数据类型很容易做到接口幂等操作。

当我们首先将操作唯一id放入set中去,操作成功之后我们将要移除此个数据,此时的移除操作有两个选择: pop 和 remove 。

首先是pop 操作:有两个重载的方法

@Nullable
V pop(K key);

* @param key must not be {@literal null}.
* @param count number of random members to pop from the set.
@Nullable
List<V> pop(K key, long count);

pop 操作 表示从根据先进先出的方式移除键值对,并返回对应的移除的value,执行操作后该键值会从缓存中消失

两个参数的 第二个参数表示要从集合中弹出的随机成员的数量,返回的参数是一个数组,也是对应的value。

如果使用第二个参数出现了 redis wrong number of arguments for ‘spop’ command
的错误,那么这是你的redis版本过低,不支持 spop(批量pop)命令,建议使用最新稳定版。

然后是remove方法:它只有一个包含可变参数的构造方法

@Nullable
Long remove(K key, Object... values);

第二个可变参数让你能够删除多个key-value对(当你设置了一个key多个value的时候)。

二者再效果上差别不大,实际使用根据个人爱好,如果说你的key只对应了一个value,那么直接使用pop更加简单一点。

建议读者可以参照实际操作体验一下,印象更深刻哈。