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推荐