iT邦幫忙

2023 iThome 鐵人賽

DAY 27
0
自我挑戰組

Hello SQL 初次見面你好系列 第 27

Day 27: Redis 中資料型態的基本操作(下)

  • 分享至 

  • xImage
  •  

在昨天的文章中,我們已經探討了 Redis 中的三個基本資料型態:String、List 和 Hash。這些資料型態提供了存儲和操作數據的基礎功能。但 Redis 的功能遠不止於此。今天,我們要深入探討另外兩個重要的資料型態:Sets 和 Sorted sets

1. Sets (集合)

Sets 是一個不包含重複元素且沒有特定順序的集合,並可以快速地添加、刪除或檢查元素是否存在於集合中

SADD / SMEMBERS

SADD 用於向集合中添加一個或多個元素,而 SMEMBERS 用於取得集合中的所有元素

127.0.0.1:6379> SADD colors red blue green
(integer) 3

127.0.0.1:6379> SMEMBERS colors
1) "red"
2) "blue"
3) "green"

SISMEMBER

檢查一個元素是否存在於集合中

127.0.0.1:6379> SISMEMBER colors red
(integer) 1 --存在就會回傳 1

127.0.0.1:6379> SISMEMBER colors yellow
(integer) 0 --不存在就會回傳 0

SCARD

獲取集合中的元素數量

127.0.0.1:6379> SCARD colors
(integer) 3

SREM

從集合中移除一個或多個元素。

127.0.0.1:6379> SREM colors blue
(integer) 1

127.0.0.1:6379> SMEMBERS colors
1) "red"
2) "green"

SINTER

用於計算多個集合之間的交集,會回傳包含所有給定集合中共同存在的元素的集合

127.0.0.1:6379> SADD eventA "John" "Mike" "Jane"
(integer) 3

127.0.0.1:6379> SADD eventB "Mike" "Tom" "Jane"
(integer) 3

127.0.0.1:6379> SINTER eventA eventB
1) "Mike"
2) "Jane"

SUNION

用於計算多個集合的聯集。會回傳一個集合,包含所有給定集合中的元素,重複的元素只會出現一次

127.0.0.1:6379> SADD eventA "John" "Mike" "Jane"
(integer) 3

127.0.0.1:6379> SADD eventB "Mike" "Tom" "Jane"
(integer) 3

127.0.0.1:6379> SUNION eventA eventB
1) "John"
2) "Mike"
3) "Jane"
4) "Tom"

SDIFF

用於計算兩個或多個集合之間的差集。也是會回傳一個集合,包含存在於第一個集合且不在其他集合中的元素

127.0.0.1:6379> SADD eventA "John" "Mike" "Jane"
(integer) 3

127.0.0.1:6379> SADD eventB "Mike" "Tom" "Jane"
(integer) 3

127.0.0.1:6379> SDIFF eventA eventB
1) "John"

2. Sorted Sets (有序集合)

Sorted Sets 與 Sets 相似,但每個元素都有一個與之相關的分數,並且不能重複,使得元素在集合中按照分數的大小進行排序

ZADD

將一個或多個元素及其分數添加到有序集合

127.0.0.1:6379> ZADD students 90 "John" 80 "Mike" 85 "Jane"
(integer) 3

ZRANGE / ZREVRANGE

ZRANGE: 根據分數從小到大取得有序集合中的元素
ZREVRANGE: 則是根據分數從大到小取得有序集合中的元素

127.0.0.1:6379> ZRANGE students 0 -1
1) "Mike"
2) "Jane"
3) "John"

-- 也可以在後面加上 WITHSCORES 會連分數也一起回傳
127.0.0.1:6379> ZRANGE students 0 -1 WITHSCORES
1) "Mike"
2) "80"
3) "Jane"
4) "85"
5) "John"
6) "90"

127.0.0.1:6379> ZREVRANGE students 0 -1  WITHSCORES
1) "John"
2) "90"
3) "Jane"
4) "85"
5) "Mike"
6) "80"

ZRANK / ZSCORE

ZRANK 獲取元素在有序集合中的排名,而 ZSCORE 獲取元素的分數。

127.0.0.1:6379> ZRANK students John
(integer) 2

127.0.0.1:6379> ZSCORE students John
"90"

ZREVRANK

用於計算在有序集合中某一元素的反向排名。正常的排名是按分數從小到大排序,而反向排名則是從大到小。換句話說,分數最高的元素在 ZREVRANK 中的排名為 0

127.0.0.1:6379> ZREVRANK students John
(integer) 0

ZREM

從有序集合中移除一個或多個元素。

127.0.0.1:6379> ZREM students Mike
(integer) 1

127.0.0.1:6379> ZRANGE students 0 -1
1) "Jane"
2) "John"

上一篇
Day 26: Redis 中資料型態的基本操作(上)
下一篇
Day28 Redis 中什麼是臨時鍵-值對
系列文
Hello SQL 初次見面你好30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言