Redis的基础操作命令(二)

四 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"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值