redis實戰 Redis命令之集合

2021-09-22 21:10:39 字數 3931 閱讀 3833

redis的集合以無序的方式儲存多個各不相同的元素,使用者可以快速對集合執行新增元素、移除元素以及檢查元素是否存在於集合中的操作。

命令用例

描述注意

sadd

sadd key item[item …]

將乙個或多個元素插入到集合中,並返回被新增元素當中原本不存在於集合中的數量

srem

srem key item[item …]

從集合中移除乙個或多個元素,並返回移除元素的個數

sismember

sisrember key item

檢查元素是否存在,存在為1,不存在為0

smembers

smembers key

返回集合中所有的元素

scard

scard key

返回集合中的元素個數

srandmember

srandmember key [count]

返回集合中隨機的乙個或多個元素,如果count>0則返回元素不會重複,否則可能會重複

spop

spop key

隨機彈出乙個元素,並返回被移除的元素

smove

smove source-key dest-key item

如果source集合包含元素item,則將item從source移除並新增到dest集合中,如果item成功移除則返回1,否則返回0

插入1和2,並返回2,說明插入成功了2個元素

127.0.0.1:6379> sadd set1 1 2

(integer) 2

再次插入元素1,返回0,說明集合中已經有元素1了

127.0.0.1:6379> sadd set1 1

(integer) 0

移除集合中存在的元素

127.0.0.1:6379> srem set1 1

(integer) 1

移除集合中不存在的元素

127.0.0.1:6379> srem set1 1

(integer) 0

移除集合中的多個元素

127.0.0.1:6379> srem set1 1 2 3

(integer) 1

返回的值為移除成功元素的個數

127.0.0.1:6379> sadd set1 1 2 3 4

(integer) 4

127.0.0.1:6379> sismember set1 1

(integer) 1

127.0.0.1:6379> smembers set1

1) "1"

2) "2"

3) "3"

4) "4"

127.0.0.1:6379> scard set1

(integer) 4

127.0.0.1:6379> srandmember set1

"2"127.0.0.1:6379> srandmember set 10

1) "1"

2) "2"

3) "3"

4) "4"

127.0.0.1:6379> srandmember set -10

1) "2"

2) "2"

3) "2"

4) "3"

5) "4"

6) "3"

7) "1"

8) "4"

9) "4"

10) "2"

127.0.0.1:6379> spop set1

"2"

轉移存在的

127.0.0.1:6379> smove set1 set2 1

(integer) 1

轉移不存在的

127.0.0.1:6379> smove set1 set2 10

(integer) 0

用於組合和處理多個集合的命令,集合真正厲害的地方在組合和關聯多個集合。

命令用例

描述注意

sdiff

sdiff key [key …]

返回那些存在於第乙個集合但不存在於其他集合中的元素(數學上的差級運算)

sdiffstore

sdiffstore dest-key key [key …]

將sdiff的結果存到dest集合中

sinter

sinter key [key …]

返回多個集合的都有的元素(數學中的交集運算)

sinterstore

sinterstore dest-key key [key …]

將sinter的結果儲存到dest集合中

sunion

sunion key [key …]

返回多個集合中的所有元素(數學中的並集)

sunionstore

sunion dest-key key [key …]

將sunion的結果儲存到dest集合中

檢視兩個集合的元素

127.0.0.1:6379> smembers set

1) "1"

2) "3"

3) "4"

127.0.0.1:6379> smembers set2

1) "1"

sdiff的結果:只返回第乙個集合中有,但其他集合中沒有的元素

127.0.0.1:6379> sdiff set1 set2

1) "3"

2) "4"

127.0.0.1:6379> sdiff set2 set1

(empty list or set)

# set1 和set2 的差集

127.0.0.1:6379> sdiff set1 set2

1) "3"

2) "4"

# set3 中是空的

127.0.0.1:6379> smembers set3

(empty list or set)

# 執行sdiffstore,返回影響的元素數

127.0.0.1:6379> sdiffstore set3 set set2

(integer) 2

# set3 中成功新增了set1和set2的差集

127.0.0.1:6379> smembers set3

1) "3"

2) "4"

127.0.0.1:6379> smembers set1

1) "1"

2) "3"

3) "4"

127.0.0.1:6379> smembers set2

1) "1"

# set1 和set2 的交集

127.0.0.1:6379> sinter set1 set2

1) "1"

127.0.0.1:6379> smembers set4

(empty list or set)

127.0.0.1:6379> sinterstore set4 set set2

(integer) 1

127.0.0.1:6379> smembers set4

1) "1"

127.0.0.1:6379> sunion set1 set2

1) "1"

2) "3"

3) "4"

redis實戰 Redis命令之列表

列表的主要優點在於它可以包含多個字串值,使得使用者可以將資料集中在同乙個地方。redis允許使用者從序列的兩端推入或者彈出元素,獲取列表元素,以及執行各種常見的列表操作。命令用例 描述注意 rpush rpush key value value 從右端推入乙個或多個值 多個值用空格隔開 lpush ...

Redis 命令(十) 之 Redis 指令碼

redis 指令碼使用 lua 直譯器來執行指令碼。redis 2.6 版本通過內嵌支援 lua 環境。執行指令碼的常用命令為 eval。語法 eval 命令的基本語法如下 redis 127.0.0.1 6379 eval script numkeys key key arg arg 例項 以下例...

redis學習之redis命令(一)

redis命令用於在redis服務上執行操作。要在redis服務上執行命令需要乙個redis客戶端。redis客戶端在redis安裝包中。redis客戶端基本語法為 redis cli啟動客戶端,連線本地的redis服務 redis cli redis 127.0.0.1 6379 redis 12...