您的位置:首页 > 数据库 > Redis

Redis的基础操作命令(二)

2016-08-03 12:02 633 查看

四 sets类型操作

set 是集合,和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合

求交并差等操作, 操作中 key 理解为集合的名字。

Redis 的 set 是 string 类型的无序集合。 set 元素最大可以包含(2 的 32 次方)个元素。

set 的是通过 hash table 实现的,所以添加、删除和查找的复杂度都是 O(1)。 hash table 会随

着添加或者删除自动的调整大小。需要注意的是调整 hash table 大小时候需要同步(获取写

锁)会阻塞其他读写操作,可能不久后就会改用跳表( skip list)来实现,跳表已经在 sorted

set 中使用了。关于 set 集合类型除了基本的添加删除操作,其他有用的操作还包含集合的

取并集(union),交集(intersection),差集(difference)。通过这些操作可以很容易的实现 sns

中的好友推荐和 blog 的 tag 功能。

1 sadd

向名称为key的的set中添加元素:

127.0.0.1:6379> sadd settest "Alex"
(integer) 1
127.0.0.1:6379> smembers settest
1) "Bob"
2) "Alex"


2 srem

删除名称key的set中的元素。

127.0.0.1:6379> sadd tyutclass 1201
(integer) 1
127.0.0.1:6379> sadd tyutclass 1202
(integer) 1
127.0.0.1:6379> sadd tyutclass 1203
(integer) 1
127.0.0.1:6379> sadd tyutclass 1204
(integer) 1
127.0.0.1:6379> srem tyutclass 1201
(integer) 1
127.0.0.1:6379> smembers tyutclass
1) "1202"
2) "1203"
3) "1204"


3 spop

随机删除一个元素。

127.0.0.1:6379> spop tyutclass
"1203"
127.0.0.1:6379> smembers tyutclass
1) "1202"
2) "1204"


4 sdiff

返回与第一个key和第二个key的差集,也就是第一个key当中有的,第二个当中没有的元素。

127.0.0.1:6379> SMEMBERS tyutclass
1) "1202"
2) "1204"
127.0.0.1:6379> SMEMBERS tyutclass1
1) "1201"
2) "1202"
127.0.0.1:6379> SDIFF tyutclass tyutclass1
1) "1204"


5 sdiffstore

返回差集并保存到另一个key当中。

127.0.0.1:6379> SDIFFSTORE tyutclass2 tyutclass tyutclass1
(integer) 1
127.0.0.1:6379> SMEMBERS tyutclass2
1) "1204"


6 sinter

返回给你所有key的交集。

127.0.0.1:6379> SINTER tyutclass tyutclass1
1) "1202"


7 sinterstore

返回交集,并保存到另一个key。

127.0.0.1:6379> SINTERSTORE tyutclass3 tyutclass tyutclass1
(integer) 1
127.0.0.1:6379> SMEMBERS tyutclass3
1) "1202"


8 sunion

返回给定key的并集。

127.0.0.1:6379> SUNION tyutclass tyutclass1
1) "1201"
2) "1202"
3) "1204"


9 sunionstore

返回并集并保存到另一个key。

127.0.0.1:6379> SUNIONSTORE tyutclass4 tyutclass tyutclass1
(integer) 3
127.0.0.1:6379> SMEMBERS tyutclass4
1) "1201"
2) "1202"
3) "1204"


10 smove

从第一个key中移除元素,保存到第二个key中。

127.0.0.1:6379> SMEMBERS tyutclass
1) "1202"
127.0.0.1:6379> SMEMBERS tyutclass1
1) "1201"
2) "1202"
3) "1204"


11 scard

返回给定key的元素个数。

127.0.0.1:6379> SCARD tyutclass1
(integer) 3


12 sismember

测试key中是否包含某元素。

127.0.0.1:6379> SISMEMBER tyutclass1 1201
(integer) 1


13 srandmember

随机返回key中某个或几个元素,但是不删除。

127.0.0.1:6379> SRANDMEMBER tyutclass1 2
1) "1202"
2) "1201"


五 sorted sets类型操作

sorted set 是 set 的一个升级版本, 它在 set 的基础上增加了一个顺序属性,这一属性在添加

修改元素的时候可以指定,每次指定后, zset 会自动重新按新的值调整顺序。

1 zadd

添加元素。

127.0.0.1:6379> ZADD class1 1 1201
(integer) 1
127.0.0.1:6379> ZADD class1 2 1202
(integer) 1
127.0.0.1:6379> ZADD class1 3 1203
(integer) 1
127.0.0.1:6379> ZRANGE class1 0 -1 withscores
1) "1201"
2) "1"
3) "1202"
4) "2"
5) "1203"
6) "3"


2 zrem

删除元素。

127.0.0.1:6379> zrem class1 1203
(integer) 1
127.0.0.1:6379> ZRANGE class1 0 -1 withscores
1) "1201"
2) "1"
3) "1202"
4) "2"


3 zincrby

如果指定key当中存在该元素,则score加指定的值,如果不存在,则添加该元素,并且score为指定的值。

127.0.0.1:6379> ZRANGE class1 0 -1 withscores
1) "1201"
2) "1"
3) "1202"
4) "2"
127.0.0.1:6379> ZINCRBY class1 2 1201
"3"
127.0.0.1:6379> ZRANGE class1 0 -1 withscores
1) "1202"
2) "2"
3) "1201"
4) "3"


4 zrank

返回key当中的指定元素下标位置。按照score从小到大排序。

127.0.0.1:6379> ZRANGE class1 0 -1 withscores
1) "1202"
2) "2"
3) "1201"
4) "3"
127.0.0.1:6379> ZRANk class1 1201
(integer) 1


5 zrevrank

同4,按照从大到小排序。

127.0.0.1:6379> ZREVRANk class1 1201
(integer) 0


6 zrangebyscore

返回指定score区间内的元素。

127.0.0.1:6379> ZRANGEBYSCORE class1 2 3 withscores
1) "1202"
2) "2"
3) "1201"
4) "3"


7 zcount

返回指定score区间内元素的数量。

127.0.0.1:6379> zcount class1 2 3
(integer) 2


8 zcard

返回集合中元素个数。

127.0.0.1:6379> ZCARD class1
(integer) 2


9 zscore

返回给定元素的score。

127.0.0.1:6379> ZSCORE class1 1202
"2"


10 zremrangebyrank

删除排序后下标为指定区间的元素。

127.0.0.1:6379> ZREMRANGEBYRANK class1 1 1
(integer) 1
127.0.0.1:6379> ZRANGE class1 0 -1
1) "1202"


11 zrangebylex

返回指定集合中的元素。

127.0.0.1:6379> zadd names 0 Alex 0 Bob 0 Cater 0 Diamond 0 Fox
(integer) 5
127.0.0.1:6379> ZRANGEBYLEX names - (z
1) "Alex"
2) "Bob"
3) "Cater"
4) "Diamond"
5) "Fox"
127.0.0.1:6379> ZRANGEBYLEX names - (b
1) "Alex"
2) "Bob"
3) "Cater"
4) "Diamond"
5) "Fox"
127.0.0.1:6379> ZRANGEBYLEX names - (B
1) "Alex"
127.0.0.1:6379> ZRANGEBYLEX names [B [D
1) "Bob"
2) "Cater"


12 zremrangebylex

删除指定集合区间内的元素。

127.0.0.1:6379> ZREMRANGEBYLEX names (D [F
(integer) 1
127.0.0.1:6379> ZRANGE names 0 -1
1) "Alex"
2) "Bob"
3) "Cater"
4) "Fox"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  redis