redis學習筆記之-(4)-set(無序不重複集合)

上一篇: redis學習筆記之-(3)-HyperLogLogs(HLL)的使用redis


4.1 set集合: 抽獎

sadd key member [member...] 添加元素到集合shell

smembers key 列出全部membersegmentfault

srandmember key count 隨機從key的集合中選擇count個成員, 可是不移除它們;學習

spop key count 隨機從key的集合中選擇count個成員,並移除它們;code

127.0.0.1:6379> sadd choujiang 1000
(integer) 1
127.0.0.1:6379> sadd choujiang 1001
(integer) 1
127.0.0.1:6379> sadd choujiang 1002
(integer) 1
127.0.0.1:6379> sadd choujiang 1003
(integer) 1
127.0.0.1:6379> sadd choujiang 2000
(integer) 1
127.0.0.1:6379> sadd choujiang 20003
(integer) 1
127.0.0.1:6379> sadd choujiang 20003
(integer) 0
127.0.0.1:6379> smembers choujiang
1) "1000"
2) "1001"
3) "1002"
4) "1003"
5) "2000"
6) "20003"
127.0.0.1:6379> srandmember choujiang 3
1) "1002"
2) "1001"
3) "20003"
127.0.0.1:6379> smembers choujiang
1) "1000"
2) "1001"
3) "1002"
4) "1003"
5) "2000"
6) "20003"
127.0.0.1:6379> spop choujiang 2
1) "2000"
2) "1001"
127.0.0.1:6379> spop choujiang 2
1) "1002"
2) "20003"
127.0.0.1:6379> smembers choujiang
1) "1000"
2) "1003"
127.0.0.1:6379> sadd choujiang 3001 3002 3004
(integer) 3
127.0.0.1:6379> smembers choujiang
1) "1000"
2) "1003"
3) "3001"
4) "3002"
5) "3004"
127.0.0.1:6379>

4.2 關注/點贊/收藏/轉發/標籤

key=like:niewj存儲的是關注過niewj的人rem

sadd(關注):get

user1給niewj關注的操做= sadd like:niewj user1

srem(取消關注:io

user1給niewj取消關注的操做= srem like:niewj user1

smembers(展示關注的人列表):class

列出給niewj關注的全部人: smembers like:niewj

scard(彙總關注人數):學習筆記

彙總給niewj關注的全部人的人數: scard like:niewj

sismember(判斷某人有沒關注):

判斷給niewj關注的人裏面有沒有along: sismember like:niewj along

以下:

127.0.0.1:6379> sadd like:niewj along # along給niewj關注
(integer) 1
127.0.0.1:6379> sadd like:niewj zzf # zzf給niewj關注
(integer) 1
127.0.0.1:6379> sadd like:niewj anzai # anzai給niewj關注
(integer) 1
127.0.0.1:6379> smembers like:niewj # 列出給niewj關注的人
1) "anzai"
2) "zzf"
3) "along"
127.0.0.1:6379> srem like:niewj zzf # zzf 取消了給niewj的關注
(integer) 1
127.0.0.1:6379> smembers like:niewj # 列出給niewj關注的人
1) "anzai"
2) "along"
127.0.0.1:6379> scard like:niewj # 列出給niewj關注的人的人數
(integer) 2
127.0.0.1:6379> sismember like:niewj along # 判斷 along有沒有給niewj關注
(integer) 1
127.0.0.1:6379> sismember like:niewj zzf # 判斷 zzf有沒有給niewj關注
(integer) 0

4.3 關注模型

4.3.4 共同關注:

關注了個人人: like:niewj

關注了along的人: like:along

以下:

127.0.0.1:6379> smembers like:niewj # 列出關注了niewj的人
1) "anzai"
2) "along"
127.0.0.1:6379> sadd like:niewj xupeng # 再加個關注者吧: xupeng
(integer) 1
127.0.0.1:6379> smembers like:niewj # 列出關注了niewj的人
1) "anzai"
2) "along"
3) "xupeng"
# 添加 關注 along的人
127.0.0.1:6379> sadd like:along niewj
(integer) 1
127.0.0.1:6379> sadd like:along along
(integer) 1
127.0.0.1:6379> sadd like:along xupeng
(integer) 1
127.0.0.1:6379> smembers like:along # 列出關注了 along的人:
1) "along"
2) "xupeng"
3) "niewj"
# ====> 列出 niewj和along的共同關注者:
127.0.0.1:6379> sinter like:niewj like:along
1) "along"
2) "xupeng"
127.0.0.1:6379>

4.3.5 推薦關注(可能認識的人)

上面咱們能夠看到, along和xupeng都關注了 niewj和along; 這樣, 咱們能夠從他們的關注者中找到非共同關注者, 而後給他們推薦對方的關注; 就相似於社交關係中, 給共同認識的人以外的人, 介紹他不認識的人認識;

咱們先列出: 關注了along可是沒有關注niewj的人:

127.0.0.1:6379> sdiff like:along like:niewj # 關注了along可是沒有關注niewj的人
1) "niewj"
127.0.0.1:6379>

這樣就能夠推薦給 niewj, 讓他 去關注 niewj;

咱們再列出: 關注了niewj可是沒有關注along的人:

127.0.0.1:6379> sdiff like:niewj like:along
1) "anzai"

這樣就能夠推薦給 anzai, 讓他 去關注 along;

上面列出了交集-sinter 差集-sdiff , 還差一個並集-sunion

列出關注了niewj和along的全部人, 給他們發通知告訴他們全部人(並集)的關注名單, 讓他們本身去選看本身認識不認識, 而後根據他們的選擇, 手機數據 進一步確認要不要推薦他們關注;

列出兩人的全部關注者:

127.0.0.1:6379> sunion like:niewj like:along # 列出兩人的全部關注者
1) "anzai"
2) "along"
3) "niewj"
4) "xupeng"
127.0.0.1:6379>
相關文章
相關標籤/搜索