Redis 基本型別之 Set 型別

2021-10-13 23:03:28 字數 3156 閱讀 9964

基本指令

# sadd

127.0.0.1:6379> sadd myset hello # 在集合中新增元素

(integer) 1

127.0.0.1:6379> sadd myset iron

(integer) 1

127.0.0.1:6379> sadd myset egg

(integer) 1

# smembers

127.0.0.1:6379> smembers myset # 檢視指定集合的所有值

1)"egg"

2)"hello"

3)"iron"

# sismember

127.0.0.1:6379> sismember myset iron # 判斷某乙個值是不是在集合中

(integer) 1

127.0.0.1:6379> sismember myset love

(integer) 0

# scard

127.0.0.1:6379> scard myset # 檢視集合中的個數

(integer) 3

127.0.0.1:6379> sadd myset hello # 若集合中已存在,則新增失敗

(integer) 0

# srem

127.0.0.1:6379> scard myset

(integer) 3

127.0.0.1:6379> srem myset egg # 移除集合中的某乙個元素

(integer) 1

127.0.0.1:6379> scard myset

(integer) 2

127.0.0.1:6379> smembers myset

1)"hello"

2)"iron"

# srandmember

127.0.0.1:6379> srandmember myset # 隨機選取集合中的某乙個元素

"iron"

127.0.0.1:6379> srandmember myset

"hello"

127.0.0.1:6379> srandmember myset 2 # 隨機選取集合中一定數量的元素

1)"hello"

2)"iron"

127.0.0.1:6379> srandmember myset 3 # 若選取的數量大於集合全部數量,則全部取

1)"hello"

2)"iron"

# spop

127.0.0.1:6379> smembers myset

1)"hello"

2)"hello2"

3)"hello1"

4)"iron"

127.0.0.1:6379> spop myset # 隨機移除集合中的某乙個元素

"hello"

127.0.0.1:6379> spop myset

"iron"

127.0.0.1:6379> smembers myset

1)"hello2"

2)"hello1"

# smove

127.0.0.1:6379> sadd myset hello

(integer) 1

127.0.0.1:6379> sadd myset iron

(integer) 1

127.0.0.1:6379> sadd myset egg

(integer) 1

127.0.0.1:6379> sadd myset2 set2

(integer) 1

127.0.0.1:6379> smove myset myset2 hello # 將前面集合裡的元素移動到後面的集合中

(integer) 1

127.0.0.1:6379> smembers myset

1)"egg"

2)"iron"

127.0.0.1:6379> smembers myset2

1)"hello"

2)"set2"

# sdiff sinter sunion

127.0.0.1:6379> sadd myset a

(integer) 1

127.0.0.1:6379> sadd myset b

(integer) 1

127.0.0.1:6379> sadd myset c

(integer) 1

127.0.0.1:6379> sadd myset d

(integer) 1

127.0.0.1:6379> sadd myset1 c

(integer) 1

127.0.0.1:6379> sadd myset1 d

(integer) 1

127.0.0.1:6379> sadd myset1 e

(integer) 1

127.0.0.1:6379> sadd myset1 f

(integer) 1

127.0.0.1:6379>

sdiff myset myset1 # 檢視兩個集合的差集

1)"b"

2)"a"

127.0.0.1:6379> sinter myset myset1 # 檢視兩個集合的交集,這裡可以用來實現兩個使用者的共同關注

1)"c"

2)"d"

127.0.0.1:6379> sunion myset myset1 # 檢視兩個集合的並集

1)"e"

2)"f"

3)"d"

4)"a"

5)"b"

6)"c"

使用場景

好友/關注/粉絲/興趣小組

a. sinter 可以檢視兩個人的共同關注/好友/興趣

b. scard 可以檢視某人的粉絲/好友數量

c. sismember 檢視使用者 b 是否為使用者 a 的粉絲/好友

d. smove 將粉絲加為好友時,從粉絲集合轉移到好友集合

e. sdiff 檢視使用者 a 可能認識的人

利用 srandmember 來進行內容的隨機展示,或者進行**

黑名單,白名單功能

(五)Redis基本型別 列表型別(List)

1 介紹 列表型別可以儲存乙個有序的字串列表,常用的操作是向列表兩端新增元素,或者獲得列表的某乙個片段。列表內部是使用雙向鍊錶實現的,獲取越接近兩端的元素速度越快。乙個列表型別鍵最多能容納2的32次方 1個元素。2 命令 1 向列表兩端增加元素 lpush key value value rpush...

Redis 基本型別及功能

一 鍊錶 adlist.h adlist.c 實質是乙個雙端列表 listiter是訪問鍊錶的迭代器,指標 next 指向鍊錶的某個結點,direction標示迭代訪問的方向 巨集al start head表示向前,al start tail表示向後 typedef struct listiter ...

Redis 基本型別與理解

一 字串 set key val k v mset k v k v k v type string 二 雜湊資料 hset key n val key n v hmset key n v n v n v type hash 三 列表 lpush key val k v 追加形式,可新增重複的元素 t...