- redis的set是string类型的无序集合。
- set元素最大可以包含(2的32次方-1)个元素。
关于set集合类型除了基本的添加删除操作,其他有用的操作还包含集合的取并集(union),交集(intersection),差集(difference)。通过这些操作可以很容易的实现sns中的好友推荐功能(该类型应用场合) 。
注意:每个集合中的各个元素不能重复。
set类型操作:
sadd key member | 添加一个string元素到key对应的set集合中,成功返回1,如果元素已经在集合中返回0,key对应的set不存在返回错误 |
srem key member [member] | 从key对应set中移除给定元素,成功返回1 |
smove p1 p2 member | 从p1对应set中移除member并添加到p2对应set 中 |
scard key | 返回set的元素个数 |
sismember key member | 判断member是否在set中 |
sinter key1 key2...keyN | 返回所有给定key的交集 |
sunion key1 key2...keyN | 返回所有给定key的并集 |
sdiff key1 key2...keyN | 返回所有给定key的差集 |
smembers key | 返回key对应set的所有元素,结果是无序的 |
例:QQ好友推荐
创建rickFri的set集合类型数据,内部有5个元素:
127.0.0.1:6379[1]> sadd rickFri liming
(integer) 1
127.0.0.1:6379[1]> sadd rickFri wangpeng
(integer) 1
127.0.0.1:6379[1]> sadd rickFri zhaohai
(integer) 1
127.0.0.1:6379[1]> sadd rickFri bai3
(integer) 1
127.0.0.1:6379[1]> sadd rickFri bai4
(integer) 1
127.0.0.1:6379[1]> keys *
1) "login"
2) "rickFri"
127.0.0.1:6379[1]> type rickFri
set
127.0.0.1:6379[1]>
再创建bobFri的set集合类型数据,内部有5个元素:
127.0.0.1:6379[1]> sadd bobFri liuyu
(integer) 1
127.0.0.1:6379[1]> sadd bobFri hanhua
(integer) 1
127.0.0.1:6379[1]> sadd bobFri qikai
(integer) 1
127.0.0.1:6379[1]> sadd bobFri bai3
(integer) 1
127.0.0.1:6379[1]> sadd bobFri bai4
(integer) 1
127.0.0.1:6379[1]> keys *
1) "login"
2) "rickFri"
3) "bobFri"
127.0.0.1:6379[1]>
集合取交集、并集:
127.0.0.1:6379[1]> sinter rickFri bobFri
1) "bai3"
2) "bai4"
127.0.0.1:6379[1]> sunion rickFri bobFri
1) "bai3"
2) "zhaohai"
3) "qikai"
4) "liuyu"
5) "wangpeng"
6) "liming"
7) "bai4"
8) "hanhua"
127.0.0.1:6379[1]>
两个集合互取差集:
127.0.0.1:6379[1]> sdiff rickFri bobFri
1) "zhaohai"
2) "liming"
3) "wangpeng"
127.0.0.1:6379[1]> sdiff bobFri rickFri
1) "qikai"
2) "liuyu"
3) "hanhua"
127.0.0.1:6379[1]>
转载请注明出处:BestEternity亲笔。