Hugh's Blog

Redis 有序集合使用

zset 是 Redis 的一种数据结构,为有序集合,每次插入新的值都会根据权重重新排序。

安装

sudo apt-get install redis-server # 安装
redis-server --daemonize yes # 后台启动
redis-cli # 进入命令行界面

使用

添加新值:zadd 键值 权重 标识

127.0.0.1:6379> zadd myset 1 "one"
(integer) 1
127.0.0.1:6379> zadd myset 2 "two"
(integer) 1
127.0.0.1:6379> zadd myset 5 "five" 10 "ten"
(integer) 2
127.0.0.1:6379> zadd myset 7 "seven"
(integer) 1

查看某个标识的权重:zscore 键值 标识

127.0.0.1:6379> zscore myset "ten"
"10"
127.0.0.1:6379> zscore myset "two"
"2"

按顺序查询记录:zrange 键值 起始位置 结束位置 [withscores],从低到高,zrevrange 是从高到低。

127.0.0.1:6379> zrange myset 0 -1 withscores
 1) "one"
 2) "1"
 3) "two"
 4) "2"
 5) "five"
 6) "5"
 7) "seven"
 8) "7"
 9) "ten"
10) "10"

查看某个标识的权重排名:zrank 键值 标识,从低到高排名,zrevrank 是从高到低的排名,注意第一位从 0 开始。

127.0.0.1:6379> zrank myset "one"
(integer) 0
127.0.0.1:6379> zrevrank myset "one"
(integer) 4

增加某个标识的权重:zincrby 键值 增量 标识,如果是不存在的标识,默认从 0 开始。

127.0.0.1:6379> zrank myset "one"
(integer) 0
127.0.0.1:6379> zincrby myset 10 "one"
"11"
127.0.0.1:6379> zrank myset "one"
(integer) 4

移除某个标识:zrem 键值 标识

127.0.0.1:6379> zrem myset "one"
(integer) 1
127.0.0.1:6379> zscore myset "one"
(nil)

删除整个集合:del 键值,直接删除键值就行。

127.0.0.1:6379> del myset
(integer) 1
127.0.0.1:6379> keys myset
(empty list or set)

参考

Redis commands