0.5、Redis学习-有序集合类型及主要命令行

前言

体能状态先于精神状态,习惯先于决心,聚焦先于喜好。

Redis 官方完整的命令行文档

https://redis.io/commands

本文实验 Redis 版本为3.2.100

在Redis 2.6版本及之前,有些命令是不被支持的,建议读者安装2.6之后的版本。
命令行中 key 表示 key的name,在实际使用中对应 key的名字。
[] 表示被其包括的命令可有可无。
命令行中 value 存储的值 。
对于增、减操作,key不存在于 Redis 时,默认创建一个value为 0 的 key。
append 命令,key不存在于 Redis 时,默认创建一个空串。
Redis 计数默认从左开始,以0为基数。
Redis 命令行中空为 (nil)
弹出:即从列表中返回该元素,并从列表中删除该元素
使用的集合不存在会被认为是一个空集合

Redis 有序集合类型简介

Redis 有序集合类型可以认为是有序的set
Redis 有序集合的每一个key都可以存储一个序数用于排序
你可以认为 有序集合本身是一个大的 hashmao,key依旧是key,value是序数
Redis 有序集合允许你进行排序、序数修改、交集、并集等操作
默认情况下,Redis 有序集合的排序是升序的,序数支持双精度浮点类型

常用命令行
基本操作
ZADD key score1 key1 [score2 key2 ···] 向有序集合添加多个给定分值的成员
127.0.0.1:6379> zadd z1 100 name1
(integer) 1
ZSCORE key key1 返回有序集合key 中成员key1的分值
127.0.0.1:6379> zscore z1 name1
"100"
ZREM key key1 [key2 ···] 移除有序集合中的指定成员

返回被移除的成员总数

127.0.0.1:6379> zrem z1 name1
(integer) 1
ZCARD key 返回有序集合key中成员总数
127.0.0.1:6379> zcard z1
(integer) 0
ZINCRBY key increment key1 将有序集合key中成员key1的分值加increment
127.0.0.1:6379> zadd z1 100 name2
(integer) 1
127.0.0.1:6379> zincrby z1 10 name2
"110"
ZCOUNT key min max 返回分值位于 min与max之间的成员数量
127.0.0.1:6379> zcount z1 100 300
(integer) 2
127.0.0.1:6379> zcount z1 200 299
(integer) 0
ZRANK key key1 返回有序集合 key中成员key1的排名

默认升序
从0开始计数

127.0.0.1:6379> zrank z1 name1
(nil)
127.0.0.1:6379> zrank z1 name2
(integer) 0
127.0.0.1:6379> zrank z1 name3
(integer) 1
ZRANGE key start stop [WITHSCORES] 返回有序集合中排名位于 start 和 stop 之间的成员

WITHSCORES 会将成员的分值一并返回

127.0.0.1:6379> zrange z1 0 10 withscores
1) "name2"
2) "110"
3) "name3"
4) "300"
ZREVRANK key key1 按照降序排序返回 key1在key中的排名

rev 降序排序

127.0.0.1:6379> zrevrank z1 name2
(integer) 1
127.0.0.1:6379> zrank z1 name2
(integer) 0
ZREVRANGE key start stop [WITHSCORES] 按照降序排序返回排名范围内的成员

成员降序排序
WITHSCORES 命令,同时返回成员分值

127.0.0.1:6379> zrevrange z1 0 100 withscores
1) "name3"
2) "300"
3) "name2"
4) "110"
高级命令
ZRANGEBYSCORE key min max [WITHSCORES] 返回有序集合key中分值在min和max之间的成员

WITHSCORES 命令,同时返回成员分值


ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] 按照降序排序返回指定分值范围的成员

[WITHSCORES] 同时返回成员分值
[LIMIT offset count] 限制返回成员个数为 count


ZREMRANGEBYRANK key start stop 移除有序集合key中排名在start和stop之间的成员

包含排名的边界

127.0.0.1:6379> zrange z1 0 10 withscores
1) "name1"
2) "100"
3) "name2"
4) "110"
5) "name3"
6) "300"

127.0.0.1:6379> zremrangebyrank z1 1 1
(integer) 1

127.0.0.1:6379> zrange z1 0 10 withscores
1) "name1"
2) "100"
3) "name3"
4) "300"
ZREMRANGEBYSCORE key min max 移除有序集合中分值在 min和 max之间的成员
127.0.0.1:6379> zrange z1 0 10 withscores
1) "name1"
2) "100"
3) "name2"
4) "200"
5) "name3"
6) "300"

127.0.0.1:6379> zremrangebyscore z1 199 201
(integer) 1

127.0.0.1:6379> zrange z1 0 10 withscores
1) "name1"
2) "100"
3) "name3"
4) "300"
ZINTERSCORE key-dest key-count key1 [key2···] [WEIGHT weight [weight···]] 多个有序集合求交集

交集结果存储到 key-dest 这个有序集合中
key-count 为参与交集运算的有序集合的个数,必须严格指定
交集涉及分值的合并,这里可以增加权重参数 weight
比如有序集合1: a 100,有序集合2:a 200 ,合并后就是 a 300 结果保存到key-dest中
[WEIGHT weight [weight···]] 表述权重,如果设置则分值需要乘以 weight 然后再相加

127.0.0.1:6379> zadd z3 100 z11
(integer) 1
127.0.0.1:6379> zadd z3 200 z22
(integer) 1
127.0.0.1:6379> zadd z4 100 z11
(integer) 1
127.0.0.1:6379> zadd z4 200 z22
(integer) 1

127.0.0.1:6379> zinterstore zre 2 z3 z4 weights 1 2
(integer) 2


127.0.0.1:6379> zrange zre 0 10 withscores
1) "z11"
2) "300"//z1.100*1+z2.100*2=300
3) "z22"
4) "600"//z1.200*1+z2.200*2=600
ZUNIONSTORE key-dest key-count key1[key2···] [WEIGHT weight [weight···]] 求多个有序集合并集

交集结果存储到 key-dest 这个有序集合中
key-count 为参与交集运算的有序集合的个数,必须严格指定
并集涉及分值的合并,这里可以增加权重参数 weight,分值和权重值相乘

127.0.0.1:6379> zrange z3 0 10 withscores
1) "z11"
2) "100"
3) "z22"
4) "200"
5) "z31"
6) "400"

127.0.0.1:6379> zrange z4 0 10 withscores
1) "z11"
2) "100"
3) "z22"
4) "200"

127.0.0.1:6379> zunionstore zre3 2 z3 z4 weights 1 2
(integer) 3

127.0.0.1:6379> zrange zre3 0 10 withscores
1) "z11"
2) "300"//z3.100+z4.100*2=300
3) "z31"
4) "400"//z3.400
5) "z22"
6) "600"//z3.200+z3.200*2=600
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值