Redis基本操作进阶篇学习-「终于解决」

Redis基本操作进阶篇学习-「终于解决」Redis中SORT命令可以对列表类型、集合类型以及有序集合类型键进行排序,并返回显示排序的结果,但是不会对原有数据进行修改。

Redis基本操作进阶篇学习-

有序集合

Redis有序集合中每个元素都会关联一个double类型的分数。Redis通过分数来为集合中的成员进行从小到大的排序。

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

zadd name 2 kang

zadd name 1 li

zadd name 3 wang

zadd name 1 zhao

zrange name 0 -1
# 返回值:
# 1) "li"
# 2) "zhao"
# 3) "kang"
# 4) "wang"

SORT命令

Redis中SORT命令可以对列表类型、集合类型以及有序集合类型键进行排序,并返回显示排序的结果,但是不会对原有数据进行修改。

在对有序集合烈性排序时回忽略元素的分数,只针对元素自身的值进行排序。

常用参数介绍

参数 描述
DESC 使目标倒序排列
ALPHA 针对非数字元素排序
LIMIT 参数可以指定返回值范围
即跳过offset个元素并取之后的count个元素
BY 基于参考键进行排序
STORE 保存排序结果

针对数字元素进行排序

# 对集合进行排序操作
sadd temperature 0 18 16 -1 5 -6

sort temperature
# 正序排序返回值:
# 1) "-6"
# 2) "-1"
# 3) "0"
# 4) "5"
# 5) "16"
# 6) "18"

sort temperature desc
# 倒序排序返回值:
# 1) "18"
# 2) "16"
# 3) "5"
# 4) "0"
# 5) "-1"
# 6) "-6"

# 对列表进行排序
lpush age 23 18 16 22 26 28 42

lrange age 0 -1
# 返回值:
# 1) "42"
# 2) "28"
# 3) "26"
# 4) "22"
# 5) "16"
# 6) "18"
# 7) "23"

sort age
# 正序排序返回值:
# 1) "16"
# 2) "18"
# 3) "22"
# 4) "23"
# 5) "26"
# 6) "28"
# 7) "42"

sort age desc
# 倒序排序返回值:
# 1) "42"
# 2) "28"
# 3) "26"
# 4) "23"
# 5) "22"
# 6) "18"
# 7) "16"


# 对有序集合进行排序
zadd score 1 20 2 40 3 10 4 88

zrange scroe 0 -1
# 返回值:
# 1) "20"
# 2) "40"
# 3) "10"
# 4) "88"

sort score
# 正序排序返回值:
# 1) "10"
# 2) "20"
# 3) "40"
# 4) "88"

sort score desc
# 倒序排序返回值:
# 1) "88"
# 2) "40"
# 3) "20"
# 4) "10"

针对非数字元素排序

lpush name zhao qian sun li

sort name
# 返回值:
# (error) ERR One or more scores can"t be converted into double

sort name alpha
# 正序排序返回值
# 1) "li"
# 2) "qian"
# 3) "sun"
# 4) "zhao"

sort name alpha desc
# 倒序排序返回值:
# 1) "zhao"
# 2) "sun"
# 3) "qian"
# 4) "li"

按范围获取排序结果

lpush age 18 20 22 16 14 23

sort age limit 2 -1
# 返回值:
# 1) "18"
# 2) "20"
# 3) "22"
# 4) "23"

基于参考键进行排序

BY参数的语法为BY 参考键,其中参考键可以是字符串类型键或散列类型键的某个字段。

如果使用了BY属性,SORT命令将根据对应参考键的值进行排序。

当键名为常量时,SORT命令将不会执行排序操作。

lpush stuno 001 002 003

mset name_001 kang age_001 18

mset name_002 zhao age_001 23

mset name_003 liu age_001 16

sort stuno by age_*
# 返回值:
# 1) "002"
# 2) "003"
# 3) "001"

lpush stuno 001 002 003

MSET name kang age 18

sort stuno by age
# 返回值:
# 1) "003"
# 2) "002"
# 3) "001"

当参考键名中不包含“*”时(即键名为常量),SORT命令将不执行排序操作。

保存排序结果

STORE参数可以保存SORT排序结果,保存后的键的类型为列表类型,如果键已经存在,则会覆盖。

lpush age 18 23 16 24

sort age store result

lrange result 0 -1
# 返回值:
# 1) "16"
# 2) "18"
# 3) "23"
# 4) "24"

注意事项

  1. 尽可能减少待排序键中元素的个数
  2. 多使用LIMIT参数获取数据
  3. 如果排序数据量过大,尽可能使用STORE参数缓存结果

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5587.html

(0)
上一篇 2023-05-03
下一篇 2023-05-03

相关推荐

  • python只能用字符串读入吗(python向文件中写入字符串)

    python只能用字符串读入吗(python向文件中写入字符串)因为input ()”函数只是输入函数,是用于接受一个标准输入数据

    2023-11-29
    123
  • 埋点数据采集工具_埋点方案

    埋点数据采集工具_埋点方案更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 1.前言 埋点设计文档面向开发的埋点需求说明书,目的是让开发理解需要在什么情况下做哪些埋点采集,以及具体需要的属性

    2023-06-05
    149
  • 使用Python设定编码

    使用Python设定编码在我们编写Python代码时,我们一定会用到各种编码方式,如UTF-8、GBK等。因为不同的编码方式会使得存储的数据呈现不同的显示效果,如果不设置编码方式,就有可能出现乱码等问题。

    2024-09-18
    20
  • redis笔记04

    redis笔记04Redis 数据备份与恢复 Redis SAVE 命令用于创建当前数据库的备份。 语法 redis Save 命令基本语法如下: redis 127.0.0.1:6379> SAVE 实例 redi…

    2023-02-06
    152
  • Python 循环引用问题引发了什么?

    Python 循环引用问题引发了什么?在Python编程中,循环引用问题是一个经常出现的问题。循环引用指的是当两个或多个对象相互引用时,会导致这些对象不能被垃圾回收器回收,从而造成内存泄漏和内存溢出问题。这篇文章将介绍Python中的循环引用问题,以及这个问题引发的影响。

    2024-08-20
    28
  • Python max函数全面指南

    Python max函数全面指南在Python编程中,经常涉及到对列表或元组中最大或最小值的查找。这时,我们就可以用到max函数。max函数是Python的一个内置函数,可以用于查找列表或元组中的最大值。除了基本使用外,这个函数还有很多重要的应用场景。本篇文章将从多个方面对max函数进行讲解,旨在为读者提供全面的使用指南。

    2024-08-28
    24
  • hms 包括哪些服务_什么是能力

    hms 包括哪些服务_什么是能力     随着互联网不停的发展,人们的生活已经离不开智能手机更离不开手机应用,它让人们的生活更高效、更智慧、更便捷。HMS Core作为HMS的核心服务能力,围绕高效、安全、智慧、价值,华为HMS …

    2023-02-20
    165
  • 《分布式与云计算》MOOC第三单元课后测试答案[通俗易懂]

    《分布式与云计算》MOOC第三单元课后测试答案[通俗易懂]分布式与云计算第三单元答案: 1、lasS 全称是:基础设施即服务 2、以下哪些不是IaaS服务的优势所在? 一次投入,终身免费 3、虚拟化作用于IaaS技术架构中那一层? 动态资源层 4、管理层的作

    2023-02-03
    150

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注