首页 > 其他分享 >zset 与命令

zset 与命令

时间:2022-12-07 08:33:47浏览次数:44  
标签:zset runoobkey mongodb 成员 redis 命令 WITHSCORES mysql

转自:https://www.runoob.com/redis/redis-sorted-sets.html

1.zset数据结构

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

操作时间复杂度:

在redis sorted sets里面当items内容大于64的时候同时使用了hash和skiplist两种设计实现。这也会为了排序和查找性能做的优化。所以如上可知: 

  • 添加和删除都需要修改skiplist,所以复杂度为O(log(n))。 但是如果仅仅是查找元素的话可以直接使用hash,其复杂度为O(1)
  • 其他的range操作复杂度一般为O(log(n))
  • 当然如果是小于64的时候,因为是采用了ziplist的设计,其时间复杂度为O(n)
> ZADD runoobkey 1 redis
(integer) 1
> ZADD runoobkey 2 mongodb
(integer) 1
> ZADD runoobkey 3 mysql
(integer) 1
> ZADD runoobkey 3 mysql
(integer) 0
> ZADD runoobkey 4 mysql
(integer) 0
> ZRANGE runoobkey 0 10 WITHSCORES //打印有序集成员及成员的分数值
1) "redis"
2) "1"
3) "mongodb"
4) "2"
5) "mysql"
6) "4"
> ZRANGE runoobkey 0 10  //只打印有续集成员
1) "redis"
2) "mongodb"
3) "mysql"

2.Zrangebyscore /ZREVRANGEBYSCORE

Zrangebyscore 返回有序集合中指定分数区间的成员列表。有序集成员按分数值递增(从小到大)次序排列。具有相同分数值的成员按字典序来排列。默认情况下,区间的取值使用闭区间,可以通过给参数前增加 ( 符号来使用可选的开区间。

Zrevrangebyscore 返回有序集中指定分数区间内的所有的成员。有序集成员按分数值递减(从大到小)的次序排列。具有相同分数值的成员按字典逆序来排列。
redis 127.0.0.1:6379> ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]

用法:

> ZRANGEBYSCORE runoobkey 1 3  //打印值在[1,3]之间的元素
1) "redis"
2) "mongodb"
> ZRANGEBYSCORE runoobkey 1 3 WITHSCORES //打印分数
1) "redis"
2) "1"
3) "mongodb"
4) "2"
> ZRANGEBYSCORE runoobkey 1 3 WITHSCORES limit 1 10 //偏移量为1,偏移1个取10个
1) "mongodb"
2) "2"
> ZREVRANGEBYSCORE runoobkey 3 1 WITHSCORES //逆序,从大大小,那么max值在前, min在后
1) "mongodb"
2) "2"
3) "redis"
4) "1"
> ZREVRANGEBYSCORE runoobkey 3 1 WITHSCORES limit 1 10 //偏移一个
1) "redis"
2) "1"

offset就是偏移量,比如从第几个开始,而count表示取几条数据。

 

标签:zset,runoobkey,mongodb,成员,redis,命令,WITHSCORES,mysql
From: https://www.cnblogs.com/BlueBlueSea/p/16962011.html

相关文章

  • dotnet new cli 以及Abp-cli命令的简单使用
    首先dotnetnew .NETCore3.1SDK及更高版本dotnetnew -根据指定的模板,创建新的项目、配置文件或解决方案从.NET7SDK开始, dotnetnew 语法已更改:--list、-......
  • jstat 命令
    一、概述jstat(JVMStatisticsMonitoringTool)是用于监视虚拟机各种运行状态信息的命令行工具jstat命令格式jstat [option pid [interval] [count] ]//......
  • ReactNative 常用命令
    ReactNative常用命令安装RN的初始化命令npminstall-greact-native-cli配置淘宝镜像npmconfigsetregistryhttps://registry.npm.taobao.orgnpmconfigsetdistur......
  • jps 命令
    一、概述jps是JProcessStatusTool的简称,它的作用是为了列出所有正在运行中的Java虚拟机进程每一个Java程序在启动的时候都会为之创建一个Jvm实例,通过jps......
  • 如何使用命令行(cmd窗口等)?
    每次查每次忘,自己写一个常用的供查询,希望哪天能成为我的本能。cd文件名:进入下一级文件cd..:返回上一文件夹......
  • sed: -e 表达式 #1, 字符 1: 未知的命令:“'”
    https://blog.csdn.net/linmingan/article/details/80007727  加双引号!!利用sed更改文件test.txt的第一行为abc:sed-i'1cabc'test.txt但是当将'1cabc'以变量形......
  • linux expect 自动交互命令
    如何从机器A上ssh到机器B上,然后执行机器B上的命令?如何使之自动化完成?看完下面的文章你就明白了一、安装expect是基于tcl演变而来的,所以很多语法和tcl类似sudoapt-get......
  • 在Java中调用系统 Windows Shell或者Linux Shell命令行的使用
    Jdk8中的Runtime类以及Process类结合起来可用于调用系统的命令行,具体使用参考JDK8手册Jdk17版本中这两个类的使用有一定的改变,用起来会更加方便,有需要可以参考JDK17手册......
  • Linux常用(实用)命令大全
    pwd显示工作路径shutdown-hnow关闭系统/halt关闭系统shutdown-rnow重启/reboot重启systemctlstopfirewalld关闭防火墙ipaddr查看ip地址1、c......
  • mysqldump备份命令使用参数
    参数参数说明导出全部数据库。mysqldump-uroot-p--all-databases导出全部表空间。mysqldump-uroot-p--all-databases--all-tablespaces不导出任何表空间......