简述

  • 上一文中简述了使用StringRedisTemplate操作redis中的set类型,今天来记录一下操作zset类型的主要方法

代码

@RunWith(SpringRunner.class)
@SpringBootTest
public class ZSetDemo { @Autowired
private StringRedisTemplate redisTemplate; @Test
public void test1() {
//向集合中插入元素,并设置分数
redisTemplate.opsForZSet().add("ranking-list", "p1", 2.1); //向集合中插入多个元素
DefaultTypedTuple<String> tuple1 = new DefaultTypedTuple<String>("p2", 1.1);
DefaultTypedTuple<String> tuple2 = new DefaultTypedTuple<String>("p3", 3.1);
redisTemplate.opsForZSet().add("ranking-list", new HashSet<>(Arrays.asList(tuple1, tuple2))); //打印
printZSet("ranking-list");
} @Test
public void test2() {
printZSet("ranking-list");
//从集合中删除指定元素
redisTemplate.opsForZSet().remove("ranking-list", "p1");
printZSet("ranking-list");
} @Test
public void test3() {
//为指定元素加分
Double score = redisTemplate.opsForZSet().incrementScore("ranking-list", "p1", 2);
System.out.println(score);//返回加分后的得分
printZSet("ranking-list");
} @Test
public void test4() {
//返回指定成员的排名(从小到大)
Long rank = redisTemplate.opsForZSet().rank("ranking-list", "p1");
//从大到小
Long reverseRank = redisTemplate.opsForZSet().reverseRank("ranking-list", "p1");
System.out.println(rank);
System.out.println(reverseRank);
} @Test
public void test5() {
//返回集合内元素的排名,以及分数(从小到大)
Set<TypedTuple<String>> tuples = redisTemplate.opsForZSet().rangeWithScores("ranking-list", 0, -1);
for (TypedTuple<String> tuple : tuples) {
System.out.println(tuple.getValue() + " : " + tuple.getScore());
}
} @Test
public void test6() {
//返回集合内元素在指定分数范围内的排名(从小到大)
Set<String> ranking = redisTemplate.opsForZSet().rangeByScore("ranking-list", 0, 5);
System.out.println(ranking);
//带偏移量和个数,下例意为从第二个开始,要三个
Set<String> ranking2 = redisTemplate.opsForZSet().rangeByScore("ranking-list", 0, 5, 1, 3);
System.out.println(ranking2);
//也可以带分数返回,类似于test5
} @Test
public void test7() {
//返回集合内指定分数范围的成员个数
Long count = redisTemplate.opsForZSet().count("ranking-list", 0, 2);
System.out.println(count);
//返回集合内的成员个数
Long size = redisTemplate.opsForZSet().size("ranking-list");//等同于zCard(key);
System.out.println(size);
} @Test
public void test8() {
//获得指定元素的分数
Double score = redisTemplate.opsForZSet().score("ranking-list", "p1");
System.out.println(score);
} @Test
public void test9() {
//删除指定索引范围的元素
printZSet("ranking-list");
redisTemplate.opsForZSet().removeRange("ranking-list", 0, 0);
printZSet("ranking-list");
} @Test
public void test10() {
//删除指定分数范围内的元素
printZSet("ranking-list");
redisTemplate.opsForZSet().removeRangeByScore("ranking-list", 4, 5);
printZSet("ranking-list");
redisTemplate.opsForZSet();
} //求交集并集与set类似 private void printZSet(String key) {
//按照排名先后(从小到大)打印指定区间内的元素, -1为打印全部
Set<String> range = redisTemplate.opsForZSet().range(key, 0, -1);
//reverseRange 从大到小
System.out.println(range);
} }

小礼物走一走,来简书关注我

RedisTemplate中zset类型的使用的更多相关文章

  1. 7、Redis中对ZSet类型的操作命令

    写在前面的话:读书破万卷,编码如有神 --------------------------------------------------------------------   ---------- ...

  2. RedisTemplate与zset

      Redis 数据结构简介 Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串).List(列表).Set(集合).Hash(散列)和 Zset(有 ...

  3. Redis自学笔记–Zset类型及管理简述

    Zset类型                                                                                               ...

  4. 详解Java 8中Stream类型的“懒”加载

    在进入正题之前,我们需要先引入Java 8中Stream类型的两个很重要的操作: 中间和终结操作(Intermediate and Terminal Operation) Stream类型有两种类型的 ...

  5. SQL 中不同类型的表连接

    http://www.linuxidc.com/Linux/2012-08/68035.htm 1.简介 在关系型数据库中,join操作是将不同的表中的数据联合在一起时非常通用的一种做法.首先让我们看 ...

  6. Object-C中动态类型对象相关操作汇总

    Object-C(以后简称OC)中有id类型,相对于明确定义类型的静态类型,称为动态类型. 使用动态类型,配合多态(不同类型拥有同名方法),动态绑定(运行时决定实际调用的方法)可以将很多判断延迟到运行 ...

  7. MYSQL中 ENUM 类型

    MYSQL中 ENUM 类型的详细解释 ENUM类型 ENUM 是一个字符串对象,其值通常选自一个允许值列表中,该列表在表创建时的列规格说明中被明确地列举. 在下列某些情况下,值也可以是空串(&quo ...

  8. 第66课 C++中的类型识别

    1. 类型识别 (1)在面向对象中可能出现下面的情况 ①基类指针指向子类对象 ②基类引用成为子类对象的别名 ▲静态类型——变量(对象)自身的类型(定义变量类型时类型或参数类型) ▲动态类型——指针(引 ...

  9. 【翻译自nikic大神】PHP中原生类型的方法

    引言 第一次,翻译别人的文章,用四级英语的水平来翻译~~囧,可能有很多不太恰当的地方,尽管拍砖(有些地方实在想不到恰当的翻译,我同时贴出了原文和自己很low的翻译). 翻译这篇文章用了我3个晚上一个中 ...

随机推荐

  1. python网络编程——使用UDP、TCP协议收发信息

    UDP UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送. UDP传输数据时有大小限制,每个被传输的数据报必须限定在64KB之内. UDP ...

  2. RPC框架调用过程详解

    RPC框架调用过程详解 2017年09月16日 21:14:08 荷叶清泉 阅读数 6275   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. ...

  3. 通过设置访问密码查看Tomcat服务器运行状态

    安装tomcat 设置访问manager用户名,密码 vim /usr/local/tomcat9/conf/tomcat-users.xml # 设置访问manager用户名,密码 # 在倒数第二行 ...

  4. 请手写代码实现一个promise

    第一步:promise的声明 class Promise{ // 构造器 constructor(executor){ // 成功 let resolve = () => { }; // 失败 ...

  5. Python多线程异步任务队列

    原文地址 python的多线程异步常用到queue和threading模块 #!/usr/bin/env python # -*- coding: UTF-8 -*- import logging i ...

  6. 【异常】org.apache.hadoop.hdfs.server.common.InconsistentFSStateException

    1 异常信息 - ::, INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Maximum size of an xattr: -- ...

  7. 外网访问VMware(Centos7.0,NAT模式)搭建的web服务器应用

    首先参考         https://www.cnblogs.com/studyhard-cq/p/11551755.html 设置好NAT模式,能访问公网. 1.打开VMware,点击左上角编辑 ...

  8. deep_learning_Function_tf.identity()

    这两天看batch normalization的代码时,学到滑动平均窗口函数ExponentialMovingAverage时,碰到一个函数tf.identity()函数,特此记录. tf.ident ...

  9. Cocos Creator 热更新文件MD5计算和需要注意的问题

    Creator的热更新使用jsb.热更新基本按照 http://docs.cocos.com/creator/manual/zh/advanced-topics/hot-update.html?h=% ...

  10. win10上使用自带的Hyper-V安装虚拟机

    Hyper-V管理器,新建虚拟机,安装了.iso系统,但启动报错,电脑上联想G40-70,都说在bios设置的security里开启硬件虚拟化选项,可我security里没有虚拟化相关选项, 后来在 ...