redis学习笔记3--set

 

list:有序且,允许重复数据的链表 存在POP PUSH的概念

set: 无需序,不能重复的集合 主要是ADD 

sortSet:有序,不能重复的集合 

 

整体结构图:

http://dl.iteye.com/upload/picture/pic/115943/f6e6971a-0216-3fe3-b89c-4ec5b53b762a.jpg

 

 

1.SADD 新增元素

语法: sadd key value 

实践:

redis 127.0.0.1:6379> sadd s1 1

(integer) 1

redis 127.0.0.1:6379> sadd s1 2 

(integer) 1

redis 127.0.0.1:6379> sadd s2 3 

(integer) 1

redis 127.0.0.1:6379> sadd s1 1      // 重复数据不会被添加

(integer) 0

redis 127.0.0.1:6379>

 

2.SREM 删除元素

语法:srem key value 

实践:

redis 127.0.0.1:6379> smembers s1 

1) "1"

2) "2"

redis 127.0.0.1:6379> srem s1 1       // 删除s1中的1元素

(integer) 1

redis 127.0.0.1:6379> smembers s1 

1) "2"

redis 127.0.0.1:6379> 

 

3.SMEMBERS 列出所有信息 类似list的 lrange

语法:smembers key 

实践:

redis 127.0.0.1:6379> smembers s1 

1) "2"

redis 127.0.0.1:6379> 

 

 

4.SISMEMBER 判断是否存在该元素

语法:sismember key value 

1:存在该元素

0:不存在

 

实践:

redis 127.0.0.1:6379> sismember s1 1   存在的元素返回1

(integer) 1

redis 127.0.0.1:6379> sismember s1 3   不存在的元素返回0

(integer) 0

redis 127.0.0.1:6379>

 

5.SCARD 计算集合中元素总数 size

语法:scard key 

实践:

redis 127.0.0.1:6379> scard s1     // 返回集合中元素个数

(integer) 2

redis 127.0.0.1:6379> 

 

6.SMOVE 将集合中一个元素转移到另一个集合中

语法: smove  source destination value 

实践:

redis 127.0.0.1:6379> smembers s1 

1) "1"

2) "2"

redis 127.0.0.1:6379> smembers s2

(empty list or set)

redis 127.0.0.1:6379> smove s1 s2 1    // 将S1中的1移动到了S2中

(integer) 1

redis 127.0.0.1:6379> smembers s1 

1) "2"

redis 127.0.0.1:6379> smembers s2

1) "1"

redis 127.0.0.1:6379>

 

7.SPOP 随机弹出一个元素

语法: spop key 

实践:

redis 127.0.0.1:6379> smembers s1 

1) "1"

2) "2"

3) "3"

4) "4"

redis 127.0.0.1:6379> spop s1           // 随机弹出一个元素

"3"

redis 127.0.0.1:6379> smembers s1 

1) "1"

2) "2"

3) "4"

redis 127.0.0.1:6379> 

 

8.SRANDMEMBER 随机获取一个元素,但是不弹出集合,这个是跟SPOP唯一的区别

语法: SRANDMEMBER

实践:

redis 127.0.0.1:6379> smembers s1 

1) "1"

2) "2"

3) "4"

redis 127.0.0.1:6379> SRANDMEMBER s1   //  随机取得一个数据,但是元素不会丢失

"4"

redis 127.0.0.1:6379> smembers s1 

1) "1"

2) "2"

3) "4"

redis 127.0.0.1:6379>

 

9.SINTER 取两个集合的交集

语法:SINTER key1 key2 

实践:

redis 127.0.0.1:6379> smembers s2 

1) "1"

2) "10"

redis 127.0.0.1:6379> smembers s1 

1) "1"

2) "2"

3) "4"

redis 127.0.0.1:6379> sinter s1 s2    // 两个集合共同的元素是 1 

1) "1"

redis 127.0.0.1:6379>

 

10.SINTERSTORE 取两个集合的交集并保存到另一个集合中 

语法:SINTERSTORE destination key1 key2 

实践:

redis 127.0.0.1:6379> smembers s1

1) "1"

2) "2"

3) "3"

redis 127.0.0.1:6379> smembers s2

1) "1"

2) "10"

redis 127.0.0.1:6379> smembers s3                 //这个时候S3是空的

(empty list or set)

redis 127.0.0.1:6379> sinterstore s3  s1 s2       //取两个的交集并保存到s3 中

(integer) 1

redis 127.0.0.1:6379> smembers s3

1) "1"

redis 127.0.0.1:6379>

 

11.SUNION  取两个集合的并集 

语法:SUNION key1 key2 

实践:

redis 127.0.0.1:6379> smembers s1

1) "1"

2) "2"

3) "3"

redis 127.0.0.1:6379> smembers s2

1) "1"

2) "10"

redis 127.0.0.1:6379> sunion s1 s2              // 取得两个集合的并集

1) "1"

2) "2"

3) "3"

4) "10"

redis 127.0.0.1:6379> 

 

12.SUNIONSTORE 取两个集合的并集并保存到另一个集合中 

语法: SUNIONSTORE destination key1 key2  

实践:

redis 127.0.0.1:6379> smembers s1

1) "1"

2) "2"

3) "3"

redis 127.0.0.1:6379> smembers s2

1) "1"

2) "10"

redis 127.0.0.1:6379> sunionstore  s4 s1 s2 

(integer) 4

redis 127.0.0.1:6379> smembers s4

1) "1"

2) "2"

3) "3"

4) "10"

redis 127.0.0.1:6379> 

 

13.SDIFF 取两个集合的差集

语法:SDIFF key1 key2

实践:

redis 127.0.0.1:6379> smembers s1

1) "1"

2) "2"

3) "3"

redis 127.0.0.1:6379> smembers s2

1) "1"

2) "10"

redis 127.0.0.1:6379> sdiff s1 s2    // 获取的是两个之间的差集

1) "2"

2) "3"

redis 127.0.0.1:6379> 

 

14.SDIFFSTORE 取两个集合的差集 并保存到第三个集合中

语法:SDIFFSTORE key1 key2 diffSet

实践:

redis 127.0.0.1:6379> smembers s1

1) "1"

2) "2"

3) "3"

redis 127.0.0.1:6379> smembers s2

1) "1"

2) "10"

redis 127.0.0.1:6379> sdiffstore s5  s1 s2    // 将差集的数据保存到s5中 

(integer) 2

redis 127.0.0.1:6379> smembers s5

1) "2"

2) "3"




已有 0 人发表留言,猛击->>这里<<-参与讨论


ITeye推荐