简述

  • 上一文中简述了使用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的文本挖掘的特征选择/提取

    在文本挖掘与文本分类的有关问题中,文本最初始的数据是将文档表示成向量空间模型的一个矩阵,而这个矩阵所拥有的就是不同的词,常采用特征选择方法.原因是文本的特征一般都是单词(term),具有语义信息,使用 ...

  2. 预约系统(二) MVC框架搭建

    采用VS2013,自带的MVC4来搭建 MODEL层,表对象的建立: T_Bm.cs using System; using System.Collections.Generic; using Sys ...

  3. O013、动手实践Linux VLAN

    参考https://www.cnblogs.com/CloudMan6/p/5326737.html   本节我们来看如何在实验环境中实施和部署如下的VLAN 网络  

  4. 利用yaml文件管理资源

    利用yaml配置文件管理资源 [root@master ~]# cat nginx-deployment.yaml apiVersion: apps/v1beta2 kind: Deployment ...

  5. python之requests示例

    一) import requests def download(url, num_tries=, user_agent='wswp', proxies=None): ''' 下载指定url并返回网页内 ...

  6. 第十三篇 JS 操作table表格

    JS 操作table表格 这节课难度可能高一点,因为没有提前解释if判断.for循环.这节课是直接把这两样用上了,老师先简单介绍一下: if,判断语句,判断就很简单了嘛,假如说1=1(1等于1),当然 ...

  7. postgres导入和导出

    导出整个数据库: pg_dump -h 127.0.0.1 -U zhang mydb >mydb_dum.sql 导出某个表: pg_dump -h 127.0.0.1 -U zhang my ...

  8. springboot-异步线程调用

    启动类:添加@EnableAsync注解 @SpringBootApplication @EnableAsync public class Application{ public static voi ...

  9. Hive分区表创建、分类

    一.分区表创建与说明 必须在表定义时创建partition a.单分区建表语句:create table day_table (id int, content string) partitioned ...

  10. LCD 原理和移植总结【转】

    转自:http://blog.chinaunix.net/uid-22915173-id-329617.html Framebuffer:是linux的framebuffer驱动在内存开辟的一块显存, ...