• redis zset使用


    zset是sorted set,以score排序,而不是以插入顺序排序。元素值不能一样,但元素score可以一样,score可以是整数,也可以是小数。在一些特殊场景下会用到这个数据类型,如按照点赞量排序等。

    1、zadd:向有序集合添加一个或多个元素,或者更新现有元素的score

    语法:zadd key [nx | xx] [gt | lt] [ch] [incr] score member [score member . . .]

    如zadd bar 10 a 20 b 30 c 40 d,其中a的score是10,b的score是20,c的score是30,d的score是40。

    nx:not exists的简称,只有这个元素不存在时,才起作用,即只能新增元素。如zadd bar nx 50 e

    xx:只能更新元素的score。如zadd bar xx 15 a

    incr:增加指定元素的score,此时,只能指定一个元素及其score。如zadd bar incr 10 a,把a的score加10。如果元素不存在,则会新增。

    2、zrange:查看有序集合的元素

    语法:zrange key min max [byscore | bylex] [rev] [limit offset count] [withscores]

    min、max默认是排名索引,索引从0开始。如果指定byscore的话,则是score。

    如zrange bar 0 9 withscores,取索引在[0, 9]之间的元素。

    byscore:指定score区间,如zrange bar 10 30 byscore withscores。

    rev:逆序。

    如zrange bar 0 9 rev withscores,按照score倒序排列,取前10个元素。

    zrange bar 30 10 byscore rev withscores,取score在[10, 30]之间的,按照score降序排列。注意,这里大的score在前,小的score在后。

    limit offset count,limit是关键字,后面跟两个整数,第一个是偏移量,第二个是取元素的数量,如zrange bar -100 100 byscore limit 2 3 withscores,取score在[-100, 100]之间的,按照score升序排列,从第2个开始取,取3个元素。

    zrange bar 100 -100 byscore rev limit 0 10 withscores,取score在[-100, 100]之间的,按照score降序排列,从第0个开始取,取10个元素。

    相近命令:zrangebyscore、zrangestore

    zrangebyscore:等同于zrange命令加byscore选项

    语法:zrangebyscore key min max [withscores] [limit offset count]

    如zrangebyscore bar -100 100 withscores limit 0 10

    特殊地,可以用-inf代表最小,+inf代表最大,如zrangebyscore bar -inf +inf withscores limit 0 10

    zrangestore:同zrange,额外将结果存储到一个新的有序集合中

    语法:zrangestore dst src min max [byscore | bylex] [rev] [limit offset count] [withscores]

    如zrangestore rbar bar 0 9,把bar前10个元素赋值到rbar有序集合中

    3、zrevrange:zrange的逆序

    语法:zrevrange key start stop [withscores]

    如zrevrange bar 0 9 withscores,根据score从高到低,查看前10个元素。

    相近命令:zrevrangebyscore

    语法:zrevrangebyscore key max min [withscores] [limit offset count]

    如zrevrangebyscore bar 100 -100 withscores limit 0 10

    取score在[-100, 100]之间的,按照score降序排列,从第0个开始取,取10个元素

    4、zcard:查看有序集合的元素个数

    语法:zcard key

    如zcard bar,会返回一个整数。

    5、zcount:查看指定score区间的元素的个数

    语法:zcount key min max

    如zcount bar 0 10,会返回一个整数

    6、zincrby:增加有序集合中指定元素的score

    语法:zincrby key increment member

    如zincrby bar 100 a,效果等同于zadd key incr score member

    7、zrank:取指定元素的排名索引

    语法:zrank key member

    如zrank bar b,返回1。

    相近命令:zrevrank:查倒序排名

    语法:zrevrank key member

    如zrevrank bar a,返回2,即是第三名,前面还有2个元素的score比a的score大。

    8、zrem:删除指定的一个或几个元素

    语法:zrem key member [member . . .]

    如zrem bar a b,这时bar只剩c、d两个元素

    相近命令:zremrangebyrank、zremrangebyscore

    zremrangebyrank:从有序集合中删除指定排名区间内的元素

    语法:zremrangebyrank key start stop

    如zremrangebyrank bar 0 1,删除前2个元素

    zremrangebyrank bar 0 -1,删除全部元素

    zremrangebyscore:从有序集合中删除指定score区间内的元素

    语法:zremrangebyscore key min max

    如zremrangebyscore bar -100 100,删除score在[-100, 100]之间的元素

    9、zscore:查看指定元素的score

    语法:zscore key member

    如zscore bar c,返回30

    10、zinterstore

    相近命令:zunionstrore

    11、zscan

    从5.0.0之后,新增了zpopmax、zpopmin,用于弹出score最大、最小的元素。

    12、zpopmax

    语法:zpopmax key [count]

    如zpopmax bar,弹出score最大的元素

    zpopmax bar 2,弹出score排前2的元素

    相近命令:zpopmin,弹出score最小的元素

    从6.2.0之后,新增了zinter、zunion、zdiff、zdiffstore。新增了zmscore,用于一次性查看指定的多个元素的score,新增了zrandmember,用于查看一个随机的元素。

    13、zinter:对给定的一个或多个有序集合取交集

    zinterstore:对给定的一个或多个有序集合取交集,并做聚合操作,将结果存到目标有序集合中。默认是sum

    语法:zinterstore destination numkeys key [key . . .] [weights weight] [aggregate sum | min |max]

    aggregate是个关键字

    假如有一个bbr,zadd bbr 0 a 1 b 2 c 3 d,假如有一个bcr,zadd bcr 4 a 5 b 6 g 7 h

    如zinterstore bdr 2 bbr bcr,此时查看bdr,会发现有2个元素,依次是a、b,score分别是4、6。其中a的score是通过0+4算出来的,b的score是通过1+5算出来的。

    zinterstore ber 2 bbr bcr aggregate max,此时查看ber,会发现有2个元素,依次是a、b,score分别是4、5。其中a的score是0和4的较大值,b的score是1和5的较大值。

    zunionstore:对给定的一个或多个有序集合取并集,并做聚合操作,将结果存到目标有序集合中。默认是sum

    zdiffstore:对给定的一个或多个有序集合取差集。

    14、zmscore

    语法:zmscore key member [member . . .]

    如zmscore bar a b,返回一个score列表。

    15、zrandmember

    语法:zrandmember key [count [withscores]]

    如zrandmember bar 2,随机查看有序集合的两个元素。

    操作zset的命令没有一个兼具设置过期时间的功能。

  • 相关阅读:
    ①---Java开发环境配置
    1.java的基础和数据类型
    0、原生jdbc工厂类
    spring中使用quartz动态添加定时任务执行sql
    app前端代码打包步骤
    less的解析笔记
    转:玩转HTML5移动页面(动效篇)
    HTML5属性备忘单
    玩转git和github
    js基础----数组
  • 原文地址:https://www.cnblogs.com/koushr/p/5873436.html
Copyright © 2020-2023  润新知