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)