读书人

redis 学习札记3-set

发布时间: 2012-09-29 10:30:01 作者: rapoo

redis 学习笔记3--set

?

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"


读书人网 >开源软件

热点推荐