Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
一:zset有序集合数据结构
[ "user":[ "camellia1":90, "camellia2":100, "camellia3":90 ] ]
二:zset有序集合相关操作命令(PHP+linux)
1:linux命令使用
(1):添加一个键值对到有序集合。如果 成功则返回1;如果键已经存在,返回0
zadd zset-key 90 "camellia1" // 执行成功返回1 zadd zset-key 100 "camellia2" // 执行成功返回1 zadd zset-key 90 "camellia3" // 执行成功返回1 zadd zset-key 90 "camellia1" // 执行失败返回0
(2):通过hscore获取一个给定键camellia1的值。
zscore zset-key "camellia1" // 返回90
(3):获取添加的所有元素,查看刚刚的到底添加了哪几个值
zrange zset-key 0 -1 withscores 输出: 1) "camellia1" 2) "90" 3) "camellia3" 4) "90" 5) "camellia2" 6) "100"
(4):删除一个键,成功返回1,否则,返回0
zrem zset-key "camellia1" // 返回1
2:PHP命令使用
(1):插入一个键值对到zset-key有序集合。1代表插入成功;0元素代表已经存在
// 插入一个键值对到zset-key有序集合。1代表插入成功;0元素代表已经存在 $res = $redis->zadd("zset-key",900,'camellia1'); // 返回1
(2):使用zscore获取键对应的值。我们试试获取camellia1的值。
// 取值 $aa = $redis->zscore("zset-key","camellia1"); var_dump($aa); // 返回 900
(3):使用zrange获取刚刚插入的全部值,看看里面包含哪些键值对
// 获取刚刚插入的值 $str = $redis->zrange("zset-key",0,-1,true); 输出:结果是一个完整的数组 array(3) { [90]=> float(0) [900]=> float(0) ["camellia1"]=> float(900) }
(4):删除其中一个键。成功返回1,反之,返回0
rrr=redis->zrem("zset-key","90"); // 返回int 1 var_dump($rrr);
3:zset常用命令
序号
命令及描述
1
ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数
2
ZCARD key 获取有序集合的成员数
3
ZCOUNT key min max 计算在有序集合中指定区间分数的成员数
4
ZINCRBY key increment member 有序集合中对指定成员的分数加上增量 increment
5
ZINTERSTORE destination numkeys key [key ...] 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
6
ZLEXCOUNT key min max 在有序集合中计算指定字典区间内成员数量
7
ZRANGE key start stop [WITHSCORES] 通过索引区间返回有序集合指定区间内的成员
8
ZRANGEBYLEX key min max [LIMIT offset count] 通过字典区间返回有序集合的成员
9
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] 通过分数返回有序集合指定区间内的成员
10
ZRANK key member 返回有序集合中指定成员的索引
11
ZREM key member [member ...] 移除有序集合中的一个或多个成员
12
ZREMRANGEBYLEX key min max 移除有序集合中给定的字典区间的所有成员
13
ZREMRANGEBYRANK key start stop 移除有序集合中给定的排名区间的所有成员
14
ZREMRANGEBYSCORE key min max 移除有序集合中给定的分数区间的所有成员
15
ZREVRANGE key start stop [WITHSCORES] 返回有序集中指定区间内的成员,通过索引,分数从高到低
16
ZREVRANGEBYSCORE key max min [WITHSCORES] 返回有序集中指定分数区间内的成员,分数从高到低排序
17
ZREVRANK key member 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
18
ZSCORE key member 返回有序集中,成员的分数值
19
ZUNIONSTORE destination numkeys key [key ...] 计算给定的一个或多个有序集的并集,并存储在新的 key 中
20
ZSCAN key cursor [MATCH pattern] [COUNT count] 迭代有序集合中的元素(包括元素成员和元素分值)
以上基本上是我看的redis ZSET有序集合类型的基本内容,有不足的地方,还请大佬指出。
