![](https://static01.imgkr.com/temp/544df563ccb54625bc1f51d6b8890219.png)
接上文.....
5、Set类型常用api
-
Long add(K var1, V... var2):向变量中批量添加值
@Override
public void run(String... args) throws Exception {
Long add = redisTemplate.opsForSet().add("set_test", "A", "B", "C");
log.info("添加数量:{}", add);
log.info("success");
}
![](https://imgkr2.cn-bj.ufileos.com/a32c650f-63e3-407c-bd8d-32225d0ebe98.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=j%252F6nUTAaEsJaydOdEpwABvwJLYU%253D&Expires=1611500550)
-
Set<V> members(K var1):获取变量中的所有值
@Override
public void run(String... args) throws Exception {
Set<String> difference = redisTemplate.opsForSet().members("set_test");
difference.forEach(s -> {
log.info("值:{}", s);
});
log.info("success");
}
-
Long size(K var1):查看set集合大小
@Override
public void run(String... args) throws Exception {
Long size = redisTemplate.opsForSet().size("set_test");
log.info("集合大小:{}", size);
log.info("success");
}
-
Long remove(K var1, Object... var2):移除set集合中的数据(可传多个值)
@Override
public void run(String... args) throws Exception {
Long remove = redisTemplate.opsForSet().remove("set_test", "A", "B");
log.info("移除数量:{}", remove);
log.info("success");
}
-
Set<V> difference(K var1, K var2):取两个集合中的差值(注意,参数都是set缓存的key,而不是自己定义一个字符串进去!该方法是求第一个参数的差值,举个例子:var1在缓存中对应的值为{1,2,3},var2在缓存中对应的值为{2,3},那么经过difference方法,返回的就是1,如果var1在缓存中对应的值为{2,3},var2在缓存中对应的值为{1,2,3},那么经过difference方法就什么都不会返回!)
@Override
public void run(String... args) throws Exception {
redisTemplate.opsForSet().add("set_test1", "C", "D");
Set<String> difference = redisTemplate.opsForSet().difference("set_test1", "set_test");
difference.forEach(s -> {
log.info("差值:{}", s);
});
log.info("success");
}
![](https://imgkr2.cn-bj.ufileos.com/59898c52-ac82-42c2-a0ed-a901e76c505a.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=aX%252Best2aVAOxhZZ9NgNsb3LKuV4%253D&Expires=1611503093)
-
Set<V> difference(K var1, Collection<K> var2):与上个api不同的是,传进去的值是个集合,然后和原有的集合比较,返回差值
@Override
public void run(String... args) throws Exception {
List<String> stringList = new ArrayList<>();
stringList.add("set_test");
Set<String> difference = redisTemplate.opsForSet().difference("set_test1", stringList);
difference.forEach(s -> {
log.info("差值:{}", s);
});
log.info("success");
}
-
Long differenceAndStore(K var1, K var2, K var3):将第一个集合与第二个集合的差集保存在第三个集合中
@Override
public void run(String... args) throws Exception {
Long differenceAndStore = redisTemplate.opsForSet().differenceAndStore("set_test1", "set_test", "set_test3");
log.info("差集数量:{}", differenceAndStore);
Set<String> setTest3 = redisTemplate.opsForSet().members("set_test3");
setTest3.forEach(s -> {
log.info("setTest3集合中的值:{}", s);
});
log.info("success");
}
![](https://imgkr2.cn-bj.ufileos.com/eb4a04cb-0d5f-4626-a905-dab70e3dade2.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=1uh4TxE1jrhdHA3q5MCceDp0V4w%253D&Expires=1611503765)
-
Long differenceAndStore(K var1, Collection<K> var2, K var3):将第一个集合与第二个参数列表集合的差集保存在第三个集合中
@Override
public void run(String... args) throws Exception {
List<String> list = new ArrayList<>();
list.add("set_test");
Long differenceAndStore = redisTemplate.opsForSet().differenceAndStore("set_test1", list, "set_test4");
log.info("差集数量:{}", differenceAndStore);
Set<String> setTest4 = redisTemplate.opsForSet().members("set_test4");
setTest4.forEach(s -> {
log.info("setTest4集合中的值:{}", s);
});
log.info("success");
}
-
Set<V> intersect(K var1, K var2):获取第一个参数集合与第二个参数集合的交集
@Override
public void run(String... args) throws Exception {
Set<String> intersect = redisTemplate.opsForSet().intersect("set_test", "set_test1");
intersect.forEach(s -> {
log.info("交集值:{}", s);
});
log.info("success");
}
![](https://static01.imgkr.com/temp/7a2bc7b3c2014eabb4ce09a300c051dc.png)
-
Set<V> intersect(K var1, Collection<K> var2):获取第一个参数集合中与其他多个集合的交集
@Override
public void run(String... args) throws Exception {
List<String> list = new ArrayList<>();
list.add("set_test1");
Set<String> intersect = redisTemplate.opsForSet().intersect("set_test", list);
intersect.forEach(s -> {
log.info("交集值:{}", s);
});
log.info("success");
}
-
Long intersectAndStore(K var1, K var2, K var3):获取第一个集合与第二个集合的交集内容保存到第三个集合
@Override
public void run(String... args) throws Exception {
Long intersectAndStore = redisTemplate.opsForSet().intersectAndStore("set_test", "set_test1", "set_inter_1");
log.info("交集数量:{}", intersectAndStore);
Set<String> setInter = redisTemplate.opsForSet().members("set_inter_1");
setInter.forEach(s -> {
log.info("setInter集合中的值:{}", s);
});
log.info("success");
}
-
Long intersectAndStore(K var1, Collection<K> var2, K var3):获取第一个集合与第二个list集合的交集内容保存到第三个集合中
@Override
public void run(String... args) throws Exception {
List<String> list = new ArrayList<>();
list.add("set_test1");
Long intersectAndStore = redisTemplate.opsForSet().intersectAndStore("set_test", list, "set_inter_2");
log.info("交集数量:{}", intersectAndStore);
Set<String> setInter = redisTemplate.opsForSet().members("set_inter_2");
setInter.forEach(s -> {
log.info("setInter集合中的值:{}", s);
});
log.info("success");
}
-
Set<V> union(K var1, K var2):获取两个集合的并集然后去重返回
![](https://imgkr2.cn-bj.ufileos.com/521cbe12-8169-443f-bfbb-8a59750b75eb.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=cYfRbdT8q1gspbi4FMt5uSpv8zw%253D&Expires=1611551775)
@Override
public void run(String... args) throws Exception {
Set<String> union = redisTemplate.opsForSet().union("set_test3", "set_test4");
union.forEach(s -> {
log.info("并集值:{}", s);
});
log.info("success");
}
![](https://static01.imgkr.com/temp/ec962d9f0deb4837afa60f16149ed530.png)
-
Set<V> union(K var1, Collection<K> var2):获取多个集合的并集然后去重返回
@Override
public void run(String... args) throws Exception {
List<String> list = new ArrayList<>();
list.add("set_test4");
Set<String> union = redisTemplate.opsForSet().union("set_test3", list);
union.forEach(s -> {
log.info("并集值:{}", s);
});
log.info("success");
}
-
Long unionAndStore(K var1, K var2, K var3):获取两个集合的并集然后去重保存在第三个集合,返回保存的集合大小
@Override
public void run(String... args) throws Exception {
Long aLong = redisTemplate.opsForSet().unionAndStore("set_test3", "set_test4", "set_test5");
log.info("并集数量:{}", aLong);
Set<String> setTest5 = redisTemplate.opsForSet().members("set_test5");
setTest5.forEach(s -> {
log.info("setTest5中的值:{}", s);
});
log.info("success");
}
![](https://static01.imgkr.com/temp/4c80160428394ba6aa1f53c82d347640.png)
-
Long unionAndStore(K var1, Collection<K> var2, K var3):获取多个集合的并集然后去重保存在第三个集合中
@Override
public void run(String... args) throws Exception {
List<String> list = new ArrayList<>();
list.add("set_test4");
Long aLong = redisTemplate.opsForSet().unionAndStore("set_test3", list, "set_test6");
log.info("并集数量:{}", aLong);
Set<String> setTest6 = redisTemplate.opsForSet().members("set_test6");
setTest6.forEach(s -> {
log.info("setTest6中的值:{}", s);
});
log.info("success");
}
-
Boolean isMember(K var1, Object var2):第一个参数是集合key,第二个参数是要判断的值,该方法作用是判断传进去的值是否存在于这个集合中
@Override
public void run(String... args) throws Exception {
Boolean member = redisTemplate.opsForSet().isMember("set_test", "C");
log.info("是否存在:{}", member);
log.info("success");
}
![](https://imgkr2.cn-bj.ufileos.com/d7d2fb55-4e47-43c1-b847-d48e670b04cf.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=X0Qb31mT3%252FoVju40ZtVVb3N0mZc%253D&Expires=1611549912)
-
Boolean move(K var1, V var2, K var3):将集合中的值移动到第三个集合(原集合减这个值,新集合加这个值)
@Override
public void run(String... args) throws Exception {
Boolean move = redisTemplate.opsForSet().move("set_test", "C", "move_test");
log.info("是否转移:{}", move);
Set<String> setTest = redisTemplate.opsForSet().members("set_test");
if (setTest.size() == 0){
log.info("set_test参数转移之后内容为null");
}
Set<String> moveTest = redisTemplate.opsForSet().members("move_test");
moveTest.forEach(s -> {
log.info("move_test转移之后的值:{}", s);
});
log.info("success");
}
![](https://static01.imgkr.com/temp/71969833512a4c71a4041dd7dfdbe798.png)
-
V pop(K var1):弹出一个值(就是获取并删除集合中的一个值)
@Override
public void run(String... args) throws Exception {
String test = (String) redisTemplate.opsForSet().pop("move_test");
log.info("弹出的值:{}", test);
Set<String> moveTest = redisTemplate.opsForSet().members("move_test");
if (moveTest.size() == 0){
log.info("弹出值之后原集合内容为空");
}
log.info("success");
}
![](https://imgkr2.cn-bj.ufileos.com/9cb366e5-ff58-498b-a527-39feb256850d.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=TbPrQzZimo3v4UBfypbv1SoTZSU%253D&Expires=1611550617)
-
List<V> pop(K var1, long var2):弹出多个值
@Override
public void run(String... args) throws Exception {
List<String> test = redisTemplate.opsForSet().pop("set_test1", 2);
test.forEach(s -> {
log.info("弹出的值:{}", s);
});
Set<String> setTest1 = redisTemplate.opsForSet().members("set_test1");
if (setTest1.size() == 0){
log.info("弹出值之后原集合内容为空");
}
log.info("success");
}
![](https://imgkr2.cn-bj.ufileos.com/4129a3d7-f82f-4355-b263-3fd90b81b9cd.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=DUF09sy3E6saTeKt7vLi7re3bgc%253D&Expires=1611550830)
-
V randomMember(K var1):随机获取集合中的一个值,注意,这里获取到是不会删除原集合数据的
@Override
public void run(String... args) throws Exception {
String setTest4 = (String) redisTemplate.opsForSet().randomMember("set_test4");
log.info("随机获取的值:{}", setTest4);
log.info("success");
}
-
List<V> randomMembers(K var1, long var2):随机获取集合中多个值,不会删除原集合数据
@Override
public void run(String... args) throws Exception {
List<String> setTest4 = redisTemplate.opsForSet().randomMembers("set_test4", 2);
setTest4.forEach(s -> {
log.info("随机获取的值:{}", s);
});
log.info("success");
}
-
Set<V> distinctRandomMembers(K var1, long var2):去重随机获取多个值,不会删除原集合数据
@Override
public void run(String... args) throws Exception {
Set<String> setTest4 = redisTemplate.opsForSet().distinctRandomMembers("set_test4", 2);
setTest4.forEach(s -> {
log.info("随机获取的值:{}", s);
});
log.info("success");
}
![](https://static01.imgkr.com/temp/e0f3b769f00d47eeaa179864c3ba05d1.png)
-
Long size(K var1):获取集合大小
@Override
public void run(String... args) throws Exception {
Long size = redisTemplate.opsForSet().size("set_test4");
log.info("集合大小:{}", size);
log.info("success");
}
![](https://imgkr2.cn-bj.ufileos.com/8984e648-86da-464d-a430-d7a1b04c2e2b.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=N1ZJxRvIBQbvYG76ox0V3sdczAo%253D&Expires=1611551491)
-
Boolean delete(K key):删除整个集合,想删除其中一个值的话请用remove方法
@Override
public void run(String... args) throws Exception {
Boolean delete = redisTemplate.delete("set_test4");
log.info("是否删除:{}", delete);
log.info("success");
}
6、List类型常用api
-
Long leftPush(K var1, V var2):从列表左边插入一条数据,返回集合大小
@Override
public void run(String... args) throws Exception {
Long leftPush = redisTemplate.opsForList().leftPush("list_test", "A");
log.info("集合大小:{}", leftPush);
log.info("success");
}
-
Long leftPush(K var1, V var2, V var3):第一个参数是key,将第三个参数值放在第二个参数值左边,如果第二个参数值存在的话
@Override
public void run(String... args) throws Exception {
Long size = redisTemplate.opsForList().leftPush("list_test", "A", "A-");
log.info("集合大小:{}", size);
log.info("success");
}
![](https://static01.imgkr.com/temp/4badd83dcc7b44e3a203cf4d7fb7de01.png)
-
Long leftPushAll(K var1, V... var2)与Long leftPushAll(K var1, Collection<V> var2):都是批量往列表中插入数据,从左边插入
@Override
public void run(String... args) throws Exception {
// 添加三个元素进去
List<String> stringList = new ArrayList<>();
stringList.add("A");
stringList.add("A");
stringList.add("A");
redisTemplate.opsForList().leftPushAll("list_test", stringList);
redisTemplate.opsForList().leftPushAll("list_test", "B", "C", "D");
log.info("success");
}
![](https://static01.imgkr.com/temp/9f4479f471fa46c081f5235dc65827d1.png)
-
V leftPop(K var1):从左边弹出一个值并在原集合中删除
@Override
public void run(String... args) throws Exception {
String leftPop = (String) redisTemplate.opsForList().leftPop("list_test");
log.info("左边弹出的值为:{}", leftPop);
log.info("success");
}
-
V leftPop(K var1, long var2, TimeUnit var4):从左边弹出数据,如果列表是空的,等待var2时间,超过这个时间,不管有没有值都会返回
@Override
public void run(String... args) throws Exception {
String leftPop = (String) redisTemplate.opsForList().leftPop("list_test", 5L, TimeUnit.SECONDS);
log.info("左边弹出的值为:{}", leftPop);
log.info("success");
}
-
Long leftPushIfPresent(K var1, V var2):如果K这个集合存在,则从左边添加value,不存在则不添加
@Override
public void run(String... args) throws Exception {
Long aLong = redisTemplate.opsForList().leftPushIfPresent("list_test1", "B");
log.info("添加数量:{}", aLong);
log.info("success");
}
![](https://static01.imgkr.com/temp/dbf1c29b65a64d2a943e2e13b8c069f2.png)
-
Long rightPush(K var1, V var2):从列表右边插入一条数据,返回集合大小
@Override
public void run(String... args) throws Exception {
Long rightPush = redisTemplate.opsForList().rightPush("list_test", "B");
log.info("集合大小:{}", rightPush);
log.info("success");
}
-
Long rightPush(K var1, V var2, V var3):第一个参数是key,将第三个参数值放在第二个参数值右边,如果第二个参数值存在的话
@Override
public void run(String... args) throws Exception {
Long size = redisTemplate.opsForList().rightPush("list_test", "B", "B-");
log.info("集合大小:{}", size);
log.info("success");
}
![](https://static01.imgkr.com/temp/278ddc96f9d14ef58618ccd0c58f89d1.png)
-
Long rightPushAll(K var1, V... var2)与Long rightPushAll(K var1, Collection<V> var2):都是批量往列表中插入数据,从右边插入
@Override
public void run(String... args) throws Exception {
// 添加三个元素进去
List<String> stringList = new ArrayList<>();
stringList.add("E");
stringList.add("E");
stringList.add("E");
redisTemplate.opsForList().rightPushAll("list_test", stringList);
redisTemplate.opsForList().rightPushAll("list_test", "F", "G", "H");
log.info("success");
}
![](https://imgkr2.cn-bj.ufileos.com/2bd0357f-176d-4fcd-b894-a4e0cd0cca2e.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=3PsGrbOehROrYE8EbXIfhA2GsEY%253D&Expires=1611556470)
-
V rightPop(K var1):从右边弹出一个值并在原集合中删除
@Override
public void run(String... args) throws Exception {
String listTest = (String) redisTemplate.opsForList().rightPop("list_test");
log.info("右边获取的值:{}", listTest);
log.info("success");
}
-
V rightPop(K var1, long var2, TimeUnit var4):从右边弹出数据,如果列表是空的,等待var2时间,超过这个时间,不管有没有值都会返回
@Override
public void run(String... args) throws Exception {
String rightPop = (String) redisTemplate.opsForList().rightPop("list_test", 5L, TimeUnit.SECONDS);
log.info("左边弹出的值为:{}", rightPop);
log.info("success");
}
-
Long rightPushIfPresent(K var1, V var2):如果K这个集合存在,则从右边添加value,不存在则不添加
@Override
public void run(String... args) throws Exception {
Long aLong = redisTemplate.opsForList().rightPushIfPresent("list_test1", "a");
log.info("添加数量:{}", aLong);
log.info("success");
}
![](https://imgkr2.cn-bj.ufileos.com/62414af8-fafd-4910-bb22-5770171abb7d.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=19poPXGa3Fxsv07qVgO4oeK0R7E%253D&Expires=1611557599)
-
V rightPopAndLeftPush(K var1, K var2):从右边弹出一个值,保存到一个新的列表中(从新集合左边插入)
@Override
public void run(String... args) throws Exception {
String rightPopAndLeftPush = (String) redisTemplate.opsForList().rightPopAndLeftPush("list_test", "list_test1");
log.info("value:{}", rightPopAndLeftPush);
log.info("success");
}
-
V rightPopAndLeftPush(K var1, K var2, long var3, TimeUnit var5):从右边弹出一个值,如果列表是空的,则最多等待var3时间,保存到一个新的列表中(从新集合左边插入)
@Override
public void run(String... args) throws Exception {
String rightPopAndLeftPush = (String) redisTemplate.opsForList().rightPopAndLeftPush("list_test", "list_test1", 5L, TimeUnit.SECONDS);
log.info("value:{}", rightPopAndLeftPush);
log.info("success");
}
![](https://static01.imgkr.com/temp/974eae7a575f4a199aec0f9af22d5c46.png)
-
Long size(K var1):返回列表大小
@Override
public void run(String... args) throws Exception {
Long size = redisTemplate.opsForList().size("list_test");
log.info("集合大小:{}", size);
log.info("success");
}
-
Long remove(K var1, long var2, Object var4): 列表中的值是可重复的,这个方法的作用是从列表中删除值等于var4的元素。var2> 0:删除var2个从左到右移动的值等于var4的元素;var2< 0:删除var2个从右到左移动的值等于var4元素;var2 = 0:删除等于value的所有元素。
var2大于0:
@Override
public void run(String... args) throws Exception {
Long remove = redisTemplate.opsForList().remove("list_test", 2, "B-");
log.info("移除数量:{}", remove);
log.info("success");
}
![](https://static01.imgkr.com/temp/9fe0137395894d5fb8b04e620bf4276d.png)
var2小于0:
@Override
public void run(String... args) throws Exception {
// 添加一个元素进去
redisTemplate.opsForList().leftPush("list_test", "B-");
Long remove = redisTemplate.opsForList().remove("list_test", -2, "B-");
log.info("移除数量:{}", remove);
log.info("success");
}
var2等于0:
@Override
public void run(String... args) throws Exception {
// 添加三个元素进去
List<String> stringList = new ArrayList<>();
stringList.add("A");
stringList.add("A");
stringList.add("A");
redisTemplate.opsForList().leftPushAll("list_test", stringList);
log.info("success");
}
![](https://imgkr2.cn-bj.ufileos.com/910c3097-eec4-4fe7-8c29-572c37278304.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=9WNKDPsucalOHqRKX8RF%252Fcasjjw%253D&Expires=1611556062)
@Override
public void run(String... args) throws Exception {
Long remove = redisTemplate.opsForList().remove("list_test", 0, "A");
log.info("删除数量:{}", remove);
log.info("success");
}
-
List<V> range(K var1, long var2, long var4):获取指定区间的值,0,-1是获取所有
@Override
public void run(String... args) throws Exception {
List<String> listTest = redisTemplate.opsForList().range("list_test", 0, -1);
listTest.forEach(s -> {
log.info("value:{}", s);
});
log.info("success");
}
![](https://static01.imgkr.com/temp/16944071d20e4278aa5bb78405e84468.png)
-
V index(K var1, long var2):获取列表中指定位置的值(列表中的值不会被删除)
@Override
public void run(String... args) throws Exception {
String value = (String) redisTemplate.opsForList().index("list_test", 3);
log.info("value:{}", value);
log.info("success");
}
![](https://static01.imgkr.com/temp/165505f6dbf449c9a953f861161e696f.png)
-
Long indexOf(K var1, V var2):获取值第一次出现的下标
@Override
public void run(String... args) throws Exception {
Long aLong = redisTemplate.opsForList().indexOf("list_test", "A");
log.info("第一次出现的下标:{}", aLong);
log.info("success");
}
![](https://imgkr2.cn-bj.ufileos.com/643b2b47-87ad-448b-be17-84ee8fd0ceea.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=v1LbB4yTfa1NyJZUgYaEwmUJeA4%253D&Expires=1611558750)
-
Long lastIndexOf(K var1, V var2):获取值最后一次出现的下标
@Override
public void run(String... args) throws Exception {
Long aLong = redisTemplate.opsForList().lastIndexOf("list_test", "A");
log.info("最后一次出现的下标:{}", aLong);
log.info("success");
}
![](https://imgkr2.cn-bj.ufileos.com/e8d8b478-62e5-497d-b7dd-ecab1ff534bf.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=qbby3ocuzs6KU00HSoStSbreDP8%253D&Expires=1611558726)
-
void set(K var1, long var2, V var4):在集合的指定位置插入元素,如果指定位置已有元素,则覆盖,没有则新增,超过集合下标+n则会报错
@Override
public void run(String... args) throws Exception {
redisTemplate.opsForList().set("list_test", 0, "GG");
log.info("success");
}
![](https://static01.imgkr.com/temp/a13f109ab0194f5bac66d9c71e62dd66.png)
-
void trim(K var1, long var2, long var4):将列表中的数据进行截取,只保留指定的数据
@Override
public void run(String... args) throws Exception {
redisTemplate.opsForList().trim("list_test", 0, 1);
log.info("success");
}
![](https://static01.imgkr.com/temp/19bdfc41bf33401c995a82278edc235f.png)
-
Boolean delete(K key):删除整个集合,想删除其中一个值的话请用remove方法
@Override
public void run(String... args) throws Exception {
Boolean delete = redisTemplate.delete("list_test");
log.info("是否删除:{}", delete);
log.info("success");
}
7、Zset类型常用api
-
Boolean add(K var1, V var2, double var3):添加元素到变量中同时指定元素的分值(K,V已存在的情况下,score覆盖)
@Override
public void run(String... args) throws Exception {
Boolean add = redisTemplate.opsForZSet().add("zset_test", "A", 1);
log.info("是否添加:{}", add);
log.info("success");
}
![](https://imgkr2.cn-bj.ufileos.com/0ce5dced-6b6a-446d-b9cb-27d5716578d1.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=kxtPdo%252F907nSoNLGyOtowt3O03s%253D&Expires=1611560843)
-
Long add(K var1, Set<ZSetOperations.TypedTuple<V>> var2):通过TypedTuple方式新增数据
@Override
public void run(String... args) throws Exception {
ZSetOperations.TypedTuple<Object> typedTuple = new DefaultTypedTuple("B", 2.0);
ZSetOperations.TypedTuple<Object> typedTuple3 = new DefaultTypedTuple("C", 3.0);
Set<ZSetOperations.TypedTuple<Object>> typedTupleSet = new HashSet<ZSetOperations.TypedTuple<Object>>();
typedTupleSet.add(typedTuple);
typedTupleSet.add(typedTuple3);
Long zsetTest = redisTemplate.opsForZSet().add("zset_test", typedTupleSet);
log.info("数量:{}", zsetTest);
log.info("success");
}
-
Set<V> range(K var1, long var2, long var4):正序获取指定区间的值,0,-1是获取所有
@Override
public void run(String... args) throws Exception {
Set<String> setTest = redisTemplate.opsForZSet().range("zset_test", 0, -1);
setTest.forEach(s -> {
log.info("value:{}", s);
});
log.info("success");
}
![](https://imgkr2.cn-bj.ufileos.com/50e11752-aa40-4d8f-ab4a-68d5e5e6c037.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=K920ncJ4Z4G9x9aKCG1jYCQDeK4%253D&Expires=1611568468)
-
Set<V> reverseRange(K var1, long var2, long var4):倒序获取指定区间的值,0,-1是获取所有
@Override
public void run(String... args) throws Exception {
Set<String> setTest = redisTemplate.opsForZSet().reverseRange("zset_test", 0, -1);
setTest.forEach(s -> {
log.info("value:{}", s);
});
log.info("success");
}
![](https://static01.imgkr.com/temp/3819ce57bf1b47809513f57170f4a027.png)
-
Set<V> rangeByScore(K var1, double var2, double var4):根据分值获取值
@Override
public void run(String... args) throws Exception {
Set<String> test = redisTemplate.opsForZSet().rangeByScore("zset_test", 0, 7);
test.forEach(s -> {
log.info("value:{}", s);
});
log.info("success");
}
-
Long remove(K var1, Object... var2):移除集合中的数据
@Override
public void run(String... args) throws Exception {
Long remove = redisTemplate.opsForZSet().remove("zset_test", "A", "B");
log.info("移除数量:{}", remove);
log.info("success");
}
![](https://imgkr2.cn-bj.ufileos.com/4d0f194b-1180-4174-965b-e97d34ad5fe3.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=9ZRjPdTeA%252BeylbHk4sTnxGSJcvM%253D&Expires=1611561238)
-
Long removeRange(K var1, long var2, long var4):移除指定位置的数据
@Override
public void run(String... args) throws Exception {
Long remove = redisTemplate.opsForZSet().removeRange("zset_test", 0, 1);
log.info("移除数量:{}", remove);
log.info("success");
}
-
Long zCard(K var1):获取变量中元素的个数(set集合中不能有重复的值)
@Override
public void run(String... args) throws Exception {
redisTemplate.opsForZSet().add("zset_test", "A", 1);
redisTemplate.opsForZSet().add("zset_test", "B", 2);
redisTemplate.opsForZSet().add("zset_test", "A", 3);
Long card = redisTemplate.opsForZSet().zCard("zset_test");
log.info("元素的个数:{}", card);
log.info("success");
}
![](https://static01.imgkr.com/temp/ae97aebfd6dc4a66823760935e4ebe98.png)
-
Long size(K var1):获取集合大小
@Override
public void run(String... args) throws Exception {
Long size = redisTemplate.opsForZSet().size("zset_test");
log.info("集合大小:{}", size);
log.info("success");
}
-
Long removeRangeByScore(K var1, double var2, double var4):根据分值移除区间元素
@Override
public void run(String... args) throws Exception {
Long removeRangeByScore = redisTemplate.opsForZSet().removeRangeByScore("zset_test", 0, 2);
log.info("移除区间元素个数:{}", removeRangeByScore);
log.info("success");
}
![](https://static01.imgkr.com/temp/527e5a7131d44961871f84ced5d2a5ab.png)
-
Long count(K var1, double var2, double var4):根据分值查询元素个数
@Override
public void run(String... args) throws Exception {
redisTemplate.opsForZSet().add("zset_test", "F",6);
Long count = redisTemplate.opsForZSet().count("zset_test", 0, 3);
log.info("元素个数:{}", count);
log.info("success");
}
![](https://static01.imgkr.com/temp/d8799a47b7684b1ca3725c5fd0bba22f.png)
-
Double incrementScore(K var1, V var2, double var3):修改元素的分值(原子增加相应的值,注意是相加)
@Override
public void run(String... args) throws Exception {
Double aDouble = redisTemplate.opsForZSet().incrementScore("zset_test", "A", 5);
log.info("修改之后的值:{}", aDouble);
log.info("success");
}
-
Long intersectAndStore(K var1, K var2, K var3):获取两个集合的交集放到第三个集合中,分值相加
@Override
public void run(String... args) throws Exception {
redisTemplate.opsForZSet().add("zset_test1", "A", 1);
Long aLong = redisTemplate.opsForZSet().intersectAndStore("zset_test", "zset_test1", "zset_test2");
log.info("交集数量:{}", aLong);
log.info("success");
}
![](https://imgkr2.cn-bj.ufileos.com/55cfc15e-6c86-422b-9ff2-cc5362bf7b62.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=nsOpcEebEnUIZuR01A9%252BrFnvSDM%253D&Expires=1611567108)
-
Long intersectAndStore(K var1, Collection<K> var2, K var3):获取第一个集合与多个集合的交集放在第三个集合中
@Override
public void run(String... args) throws Exception {
List<String> stringList = new ArrayList<>();
stringList.add("zset_test1");
Long aLong = redisTemplate.opsForZSet().intersectAndStore("zset_test", stringList, "zset_test3");
log.info("交集数量:{}", aLong);
log.info("success");
}
-
Long unionAndStore(K var1, K var2, K var3):获取两个集合中的并集数据放入第三个集合中
@Override
public void run(String... args) throws Exception {
Long unionAndStore = redisTemplate.opsForZSet().unionAndStore("zset_test", "zset_test1", "zset_test4");
log.info("并集数量:{}", unionAndStore);
log.info("success");
}
-
Long unionAndStore(K var1, Collection<K> var2, K var3):获取多个集合的并集数据放入第三个集合中
@Override
public void run(String... args) throws Exception {
List<String> stringList = new ArrayList<>();
stringList.add("zset_test1");
Long unionAndStore = redisTemplate.opsForZSet().unionAndStore("zset_test", stringList, "zset_test5");
log.info("并集数量:{}", unionAndStore);
log.info("success");
}
-
Double score(K var1, Object var2):获取元素的分值
@Override
public void run(String... args) throws Exception {
Double score = redisTemplate.opsForZSet().score("zset_test", "A");
log.info("分值:{}", score);
log.info("success");
}
-
Set<ZSetOperations.TypedTuple<V>> rangeByScoreWithScores(K var1, double var2, double var4):通过分值获取RedisZSetCommands.Tuples的区间值
@Override
public void run(String... args) throws Exception {
Set<ZSetOperations.TypedTuple<String>> zsetTest = redisTemplate.opsForZSet().rangeByScoreWithScores("zset_test", 1, 7);
Iterator<ZSetOperations.TypedTuple<String>> iterator = zsetTest.iterator();
while (iterator.hasNext()){
ZSetOperations.TypedTuple<String> next = iterator.next();
log.info("value:{}", next.getValue());
log.info("score:{}", next.getScore());
}
log.info("success");
}
![](https://imgkr2.cn-bj.ufileos.com/8ec2583e-d03c-420e-8b43-3f346dca2e85.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=gXJeJSyn%252F7gsRfAaPyUJSQ6Nuh8%253D&Expires=1611567942)
-
Set<ZSetOperations.TypedTuple<V>> reverseRangeByScoreWithScores(K var1, double var2, double var4):根据分值倒叙排序获取区间值
@Override
public void run(String... args) throws Exception {
Set<ZSetOperations.TypedTuple<String>> zsetTest = redisTemplate.opsForZSet().reverseRangeByScoreWithScores("zset_test", 1, 10);
Iterator<ZSetOperations.TypedTuple<String>> iterator = zsetTest.iterator();
while (iterator.hasNext()){
ZSetOperations.TypedTuple<String> next = iterator.next();
log.info("value:{}", next.getValue());
log.info("score:{}", next.getScore());
}
log.info("success");
}
![](https://imgkr2.cn-bj.ufileos.com/7c81d6fa-fe8e-45cb-a635-39b8d3be3b35.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=RfRoA6kMZ%252F8oIGvHcyvgsXm9BLg%253D&Expires=1611568146)
5、结尾
下两篇文章要记录的应该是RocketMq和Netty了!
如果你觉得我的文章对你有帮助话,欢迎关注我的微信公众号:"一个快乐又痛苦的程序员"(无广告,单纯分享原创文章、已pj的实用工具、各种Java学习资源,期待与你共同进步)
![](https://imgkr2.cn-bj.ufileos.com/31cdcdb4-0041-4d45-88e8-2f4dee9b1480.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=lARnWUhKInnVHsHWknUQs20USD8%253D&Expires=1611569211)