使用场景
sorted_set存储
存储Sortde-set常用命令:
添加元素、获得元素、删除元素、范围查询、扩展命令
添加元素:
zadd (key) (grade1) (value1) (grade2) (value2)... -> 往key集合插入grade1分数的value1元素...若存在value1值,则更新对应分数grade1
获得元素:
zscore (key) (value) -> 获得key集合中的value的分数
zcard (key) -> 获取key集合的元素个数
zrange (key) (begin) (end)
zrange (key) (begin) (end) withscore -> 在获取key集合的所有元素时,带出对应分数
zrevrange (key) (begin) (end) -> 从大到小获取元素
删除元素
zrem (key) (value1) (value2)
zremrangebyrank (key) (begin) (end) -> 在key集合中按照顺序范围进行删除
zrenrangebyscore (key) (begin) (end) -> 在key集合中按照分数范围进行删除
扩展命令:
[命令] (key) limit (分页begin) (分页end) -> 分页
zincrby (key) (num) (value) -> 为key集合的元素value的分数增加num
zcount (key) (begin) (end) -> 获取key集合中分数范围为begin~end的元素个数
Sorted-Set 使用场景
如大型在线游戏积分排行榜
构建索引数据
扩展命令
172.17.0.2:6379> zadd mysort 70 zs 80 ls 90 ww (integer) 3 172.17.0.2:6379> zrangebyscore mysort 0 100 1) "zs" 2) "ls" 3) "ww" 172.17.0.2:6379> zrangebyscore mysort 0 100 withscores 1) "zs" 2) "70" 3) "ls" 4) "80" 5) "ww" 6) "90" 172.17.0.2:6379> zrangebyscore mysort 0 100 withscores limit 0 2 1) "zs" 2) "70" 3) "ls" 4) "80" 172.17.0.2:6379> zincrby mysort 3 ls "83" 172.17.0.2:6379> zscore mysort ls "83" 172.17.0.2:6379> zcount mysort 80 90 (integer) 2
范围查询
172.17.0.2:6379> zadd mysort 85 jack 95 rose (integer) 2 172.17.0.2:6379> zrange mysort 0 -1 1) "ls" 2) "jack" 3) "rose" 4) "zs" 172.17.0.2:6379> zrange mysort 0 -1 withscores 1) "ls" 2) "80" 3) "jack" 4) "85" 5) "rose" 6) "95" 7) "zs" 8) "100" 172.17.0.2:6379> zrevrange mysort 0 -1 withscores 1) "zs" 2) "100" 3) "rose" 4) "95" 5) "jack" 6) "85" 7) "ls" 8) "80" 172.17.0.2:6379> zremrangebyrank mysort 0 4 (integer) 4 172.17.0.2:6379> zadd mysort 80 zs 90 ls 100 ws (integer) 3 172.17.0.2:6379> zremrangebyscore mysort 80 100 (integer) 3 172.17.0.2:6379> zrange mysort 0 -1 (empty array)
删除元素
172.17.0.2:6379> zrem mysort tom ww (integer) 2 172.17.0.2:6379> zcard mysort (integer) 2
获得元素
172.17.0.2:6379> zscore mysort zs "100" 172.17.0.2:6379> zcard mysort (integer) 4
添加元素
172.17.0.2:6379> zadd mysort 70 zs 80 ls 90 ww (integer) 3 172.17.0.2:6379> zadd mysort 100 zs (integer) 0 172.17.0.2:6379> zadd mysort 60 tom (integer) 1
存储 Sorted-set 常用命令:
添加元素
获得元素
删除元素
范围查询
扩展命令
存储 Sorted-Set
Sorted-Set 和 Set 的区别
Sorted-Set 中的成员在集合中的位置是有序的
Sorted-Set中的成员在集合中的位置是有序的
添加元素
zadd mysort 70 zs 80 ls 90 ww
获得元素
zscore mysort zs 获取zs元素的分数
zcard mysort 获取元素数量
删除元素
zrem mysort tom ww 删除tom ww元素
zrang mysort 0 -1 查看所有元素
范围查询
zrang mysort 0 -1 withscores 看所有元素及分数
zrevrange mysort 0 -1 withscores 查看所有元素及分数倒序
扩展命令
使用场景:
如大型在线游戏积分排行榜
构建索引数据
66666666666666666
5555555555555555
444444444444444
33333333333333333
2222222222222222
111111111111111
存储Sorted-Set:
Sorted-Set和Set的区别
Sorted-Set中的成员在集合中的位置是有序的
应用场景:游戏排名(大型在线游戏积分排行榜)、微博热点话题、构建索引数据
存储Sorted-Set常用命令:添加元素、获得元素、删除元素、范围查询、扩展命令
Sorted-set
添加 zadd 例 zadd key v1 name1 v2 name2 v3 name3
取 zscore 例 zscore key name1
获取成员数量 zcard 例 zcard key
删 zrem 例 zrem key name1 name2
范围查寻(从小到大) zrange 例 zrange key 0 -1 withscores 注:withscores如果没有添加不会显示值
范围查寻(从大到小) zrevrange 例 zrevrange key 0 -1 withscores 注:withscores如果没有添加不会显示值
按照范围删除 例 zremrangebyrank key 0 4
按照value删除 例 zremrangebyscore 80 90
sorted-sort的数据类型操作:
zadd+key+元素对应的分数1+元素1,2,3......:往集合中添加元素;
zscore+key+元素:获取元素对应的分数;
zcard+key:得到集合中成员的数量;
zrem+key+元素1+元素2:删除集合中的元素;
范围查找; zrange+key+start+end; zrange+start+end+withscores:也显示分数;
zrevrange+key+start+end:排序顺序进行倒置(withscores);
zremrangebyrank+key+start+end:删除范围内的集合成员;
zremrangebycore+key+start+end:删除分数在某一范围内的成员;
zrange可以获取从a到b的index范围内的数据
zadd会替换或新增一个元素,返回新增元素的个数
和set类型很相似
不过他比set快,并且成员在集合的位置是有序的
zadd ,其实是带一个double数值
然后加上value
获取
zscore 通过值来获取double
zcard 查看里面存在的值
zrem Sort-set q 删除某个值
zrange mysort 0 -1 查询所有
zrange zset 0 -1 withcores 查询所有并且带着double
zremrangebyrank mysort 0 4
按照数据范围删除某些数据
zadd
zscore
zrem
zcard
zrange ** 0 -1 witscores
zrevrange mysort...
zremrangebyrank 按排名删 zremrangebyscore 安score删
zrangebyscore mysort 1 100 withscore limit 0 2
zincrby
zcount
------------------------------
-- sorted-set 分数关联 成员唯一,分数可以重复
------------------------------
zadd key 分数 值 分数 值 分数 值
新建 返回行数,修改 返回0,插入 返回行数
zscore 看数值
zcard 成员数
zrem key 值1 值2
zrange key 开始 结束 withscores(可选,查看值和分数) --查看内容
zrevrange key 开始 结束 withscores 排序
zremrangebyrank 范围删除
分数删除
zincrby 增加
使用场景,在线游戏积分排行榜,分数变化后更新最新分数,然后查询
索引数据,是否可以用于分页的item保存??需要考虑
Sorted-Set中的成员在集合中的位置是有序的
使用场景
如大型在线游戏积分排行榜
构建索引数据
存储Sorted-Set
--Sorted-Set和Set的区别
Sorted-Set每个成员都有一个关联的score属性,用于排序。成员不可以重复,score可以重复。时间复杂度为集合中成员的个数的对数。
--Sorted-Set中的成员在集合中的位置是有序的
存储Sorted-Set常用命令:
-添加元素
zadd mysort 70 zs 80 ls 90 ww
-获得元素
zscore mysort zs 获得谁的分数
zcard mysort 获取到具体成员数量
-删除元素
zrem mysort zs ww
-范围查询
zrange mysort 0 -1
zrange mysort 0. -1 withscores
zrevrange mysort 0. -1 withscores (从大到小排序)
zremrangebyrank mysort 0 4 (按照排名范围删除)
zremrangebyscore mysort 80 100 (按照分数范围删除)
-扩展命令
zincrby mysort 3 ls
sorted-set
与set类似,但每个成员都有一个关联的score属性,用于排序。成员不可以重复,score可以重复
常用命令
添加元素
zadd key val1 score1 val2 score2
获取分数
zscore key val1
获取成员总数
zcard key
删除成员
zrem key val1 val2...
查询sorted-set
zrange key startIndex endIndex
zrange key startIndex endIndex withscores //同时显示分数
倒序查询
zrevrange mysort 0 -1 [withscores]
按位置范围删除成员
zremrangebyrank key startIndex endIndex
按分数范围删除成员
zremrangebyscore key score1 score2
限制查询结果的索引范围
zrangebyscore key score1 score2 withscores limit startIndex endIndex
设定指定成员分数增加
zincrby key number val1
获取分数在指定范围的成员个数
zcount key score1 score2
sorted-set应用场景: 积分排行榜,构建索引数据