目錄
Redis資料結構簡介
List清單
Set集合
Hash雜湊
Zset有序集合
首頁 資料庫 Redis 深入聊聊Redis中的5種基本資料類型

深入聊聊Redis中的5種基本資料類型

Nov 23, 2021 pm 06:56 PM
redis 基本資料類型

本篇文章帶大家詳細了解Redis中的5種基本資料型別(String字串、List列表、Set集合、Hash雜湊、Zset有序集合),希望對大家有幫助!

深入聊聊Redis中的5種基本資料類型

Redis資料結構簡介

#對redis來說,所有的key(鍵)都是字串。我們在談基礎資料結構時,討論的是儲存值的資料類型,主要包括常見的5種資料類型,分別是:String、List、Set、Zset、Hash。 【相關推薦:Redis影片教學

深入聊聊Redis中的5種基本資料類型

##字串的集合,包含基礎的方法有看是否有新增、取得、刪除;還包含計算交集、並集、差集等包含鍵值對的無序散列表包含方法有新增、取得、刪除單一元素和雜湊一樣,用於儲存鍵值對字串成員與浮點數分數之間的有序映射;元素的排列順序由分數的大小決定;包含方法有添加、取得、刪除單一元素、根據分數範圍或成員來取得元素
#結構類型 結構儲存的值 結構的讀寫能力
#String字串 可以是字串、整數或浮點數 對整個字串或字串的一部分進行操作;對整數或浮點數進行自增或自減操作;
List列表 一個鍊錶,鍊錶上的每個節點都包含一個字串 對鍊錶的兩端進行push和pop操作,讀取單一或多個元素;根據值尋找或刪除元素;
Set集合 #包含字串的無序集合
Hash雜湊
Zset有序集合

#基礎資料結構詳解

String字串

String是redis中最基本的資料類型,一個key對應一個value。

String類型是二進位安全性的,意思是 redis 的 string 可以包含任何資料。如數字,字串,jpg圖片或序列化的物件。

  • 指令使用
使用
GET 取得儲存在給定鍵中的值 GET name
SET 設定儲存在給定鍵中的值 SET name value
DEL 刪除儲存在給定鍵中的值 DEL name
INCR 將鍵儲存的值加1 INCR key
DECR 將鍵儲存的值減1 #DECR key
INCRBY 將鍵儲存的值加上整數 INCRBY key amount
#DECRBY 將鍵儲存的值減去整數 #DECRBY key amount
#
  • 指令執行
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379> del hello
(integer) 1
127.0.0.1:6379> get hello
(nil)
127.0.0.1:6379> get counter
"2"
127.0.0.1:6379> incr counter
(integer) 3
127.0.0.1:6379> get counter
"3"
127.0.0.1:6379> incrby counter 100
(integer) 103
127.0.0.1:6379> get counter
"103"
127.0.0.1:6379> decr counter
(integer) 102
127.0.0.1:6379> get counter
"102"
登入後複製
  • 實戰場景
    • 快取:經典使用場景,把常用訊息,字串,圖片或影片等資訊放到redis中,redis作為快取層,mysql做持久化層,降低mysql的讀寫壓力。
    • 計數器:redis是單執行緒模型,一個指令執行完才會執行下一個,同時資料可以一步落地到其他的資料來源。
    • session:常見方案spring session redis實作session共享,

List清單

Redis中的List其實就是鍊錶(Redis用雙端鍊錶實作List)。

使用List結構,我們可以輕鬆實現最新訊息排隊功能(例如新浪微博的TimeLine)。 List的另一個應用程式就是訊息佇列,可以利用List的 PUSH 操作,將任務存放在List中,然後工作執行緒再用 POP 操作將任務取出執行。

  • 指令使用
使用RPUSH將給定值推入到清單右端RPUSH key value#LPUSH將給定值推入到列表左端LPUSH key value
##RPOP#從清單的右端彈出一個值,並傳回被彈出的值RPOP key
#LPOP從清單的左端彈出一個值,並傳回被彈出的值LPOP key
LRANGE取得清單在給定範圍上的所有值LRANGE key 0 -1
LINDEX透過索引取得清單中的元素。你也可以使用負數下標,以 -1 表示列表的最後一個元素, -2 表示列表的倒數第二個元素,以此類推。 LINEX key index
  • 使用清單的技巧
    • lpush lpop=Stack(堆疊)
    • lpush rpop=Queue(隊列)
    • lpush ltrim=Capped Collection(有限集合)
    • lpush brpop=Message Queue(訊息佇列)
  • #指令執行
127.0.0.1:6379> lpush mylist 1 2 ll ls mem
(integer) 5
127.0.0.1:6379> lrange mylist 0 -1
1) "mem"
2) "ls"
3) "ll"
4) "2"
5) "1"
127.0.0.1:6379> lindex mylist -1
"1"
127.0.0.1:6379> lindex mylist 10        # index不在 mylist 的区间范围内
(nil)
登入後複製
  • 實戰場景
    • #微博TimeLine: 有人發佈微博,用lpush加入時間軸,展示新的清單資訊。
    • 訊息佇列

Set集合

Redis 的Set 是String 型別的無序集合。集合成員是唯一的,這意味著集合中不能出現重複的資料。

Redis 中集合是透過哈希表實現的,所以添加,刪除,查找的複雜度都是 O(1)。

  • 指令使用
使用SADD為集合新增一個或多個成員SADD key valueSCARD取得集合的成員數SCARD keySMEMBER#傳回集合中的所有成員SMEMBER key memberSISMEMBER判斷member 元素是否為集合key 的成員SISMEMBER key member

其它一些集合操作,請參考這裡

https://www.runoob.com/redis/redis-sets.html
  • 指令執行
    127.0.0.1:6379> sadd myset ycf ycf1 xiao ycf
    (integer) 3
    127.0.0.1:6379> smember myset
    1) "xiao"
    2) "ycf1"
    3) "ycf"
    127.0.0.1:6379> sismember myset ycf
    (integer) 1
    登入後複製
    • 實戰場景
    • 標籤
    • (tag),為使用者新增標籤,或使用者為訊息加上標籤,這樣有相同標籤或類似標籤的可以給推薦關注的事或關注的人。
    • 點贊,或點踩,收藏等
    • ,可以放到set中實現

Hash雜湊

Redis hash 是一個string 類型的field(欄位) 和value(值) 的對應表,hash 特別適合用來儲存物件。
  • 指令使用
#指令簡單##使用HSET新增鍵值對HSET hash-key sub-key1 value1#HGET取得指定散列鍵的值HGET hash-key key1##HGETALL#HDEL
#取得雜湊中包含的所有鍵值對HGETALL hash-key
如果給定鍵存在於雜湊中,那麼就移除這個鍵######HDEL hash-key sub-key1#############
  • 命令执行
127.0.0.1:6379> hset user name1 ycf
(integer) 1
127.0.0.1:6379> hset user email1 ycf@163.com
(integer) 1
127.0.0.1:6379> hgetall user
1) "name1"
2) "ycf"
3) "email1"
4) "ycf@163.com"
127.0.0.1:6379> hget user user
(nil)
127.0.0.1:6379> hget user name1
"ycf"
127.0.0.1:6379> hset user name2 xiaoycf
(integer) 1
127.0.0.1:6379> hset user email2 xiaoycf@163.com
(integer) 1
127.0.0.1:6379> hgetall user
1) "name1"
2) "ycf"
3) "email1"
4) "ycf@163.com"
5) "name2"
6) "xiaoycf"
7) "email2"
8) "xiaoycf@163.com"
登入後複製
  • 实战场景
    • 缓存: 能直观,相比string更节省空间,的维护缓存信息,如用户信息,视频信息等。

Zset有序集合

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

  • 命令使用
命令简述使用
ZADD将一个带有给定分值的成员添加到哦有序集合里面ZADD zset-key 178 member1
ZRANGE根据元素在有序集合中所处的位置,从有序集合中获取多个元素ZRANGE zset-key 0-1 withccores
ZREM如果给定元素成员存在于有序集合中,那么就移除这个元素ZREM zset-key member1

更多命令请参考这里

https://www.runoob.com/redis/redis-sorted-sets.html

  • 命令执行
127.0.0.1:6379> zadd myscoreset 100 ycf 90 xiaoycf
(integer) 2
127.0.0.1:6379> ZRANGE myscoreset 0 -1
1) "xiaoycf"
2) "ycf"
127.0.0.1:6379> ZSCORE myscoreset ycf
"100"
登入後複製
  • 实战场景
    • 排行榜:有序集合经典使用场景。例如小说视频等网站需要对用户上传的小说视频做排行榜,榜单可以按照用户关注数,更新时间,字数等打分,做排行。

更多编程相关知识,请访问:编程视频!!

以上是深入聊聊Redis中的5種基本資料類型的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

redis集群模式怎麼搭建 redis集群模式怎麼搭建 Apr 10, 2025 pm 10:15 PM

Redis集群模式通過分片將Redis實例部署到多個服務器,提高可擴展性和可用性。搭建步驟如下:創建奇數個Redis實例,端口不同;創建3個sentinel實例,監控Redis實例並進行故障轉移;配置sentinel配置文件,添加監控Redis實例信息和故障轉移設置;配置Redis實例配置文件,啟用集群模式並指定集群信息文件路徑;創建nodes.conf文件,包含各Redis實例的信息;啟動集群,執行create命令創建集群並指定副本數量;登錄集群執行CLUSTER INFO命令驗證集群狀態;使

redis數據怎麼清空 redis數據怎麼清空 Apr 10, 2025 pm 10:06 PM

如何清空 Redis 數據:使用 FLUSHALL 命令清除所有鍵值。使用 FLUSHDB 命令清除當前選定數據庫的鍵值。使用 SELECT 切換數據庫,再使用 FLUSHDB 清除多個數據庫。使用 DEL 命令刪除特定鍵。使用 redis-cli 工具清空數據。

redis怎麼讀取隊列 redis怎麼讀取隊列 Apr 10, 2025 pm 10:12 PM

要從 Redis 讀取隊列,需要獲取隊列名稱、使用 LPOP 命令讀取元素,並處理空隊列。具體步驟如下:獲取隊列名稱:以 "queue:" 前綴命名,如 "queue:my-queue"。使用 LPOP 命令:從隊列頭部彈出元素並返回其值,如 LPOP queue:my-queue。處理空隊列:如果隊列為空,LPOP 返回 nil,可先檢查隊列是否存在再讀取元素。

centos redis如何配置Lua腳本執行時間 centos redis如何配置Lua腳本執行時間 Apr 14, 2025 pm 02:12 PM

在CentOS系統上,您可以通過修改Redis配置文件或使用Redis命令來限制Lua腳本的執行時間,從而防止惡意腳本佔用過多資源。方法一:修改Redis配置文件定位Redis配置文件:Redis配置文件通常位於/etc/redis/redis.conf。編輯配置文件:使用文本編輯器(例如vi或nano)打開配置文件:sudovi/etc/redis/redis.conf設置Lua腳本執行時間限制:在配置文件中添加或修改以下行,設置Lua腳本的最大執行時間(單位:毫秒)

redis指令怎麼用 redis指令怎麼用 Apr 10, 2025 pm 08:45 PM

使用 Redis 指令需要以下步驟:打開 Redis 客戶端。輸入指令(動詞 鍵 值)。提供所需參數(因指令而異)。按 Enter 執行指令。 Redis 返迴響應,指示操作結果(通常為 OK 或 -ERR)。

redis怎麼使用鎖 redis怎麼使用鎖 Apr 10, 2025 pm 08:39 PM

使用Redis進行鎖操作需要通過SETNX命令獲取鎖,然後使用EXPIRE命令設置過期時間。具體步驟為:(1) 使用SETNX命令嘗試設置一個鍵值對;(2) 使用EXPIRE命令為鎖設置過期時間;(3) 當不再需要鎖時,使用DEL命令刪除該鎖。

redis命令行怎麼用 redis命令行怎麼用 Apr 10, 2025 pm 10:18 PM

使用 Redis 命令行工具 (redis-cli) 可通過以下步驟管理和操作 Redis:連接到服務器,指定地址和端口。使用命令名稱和參數向服務器發送命令。使用 HELP 命令查看特定命令的幫助信息。使用 QUIT 命令退出命令行工具。

redis過期策略怎麼設置 redis過期策略怎麼設置 Apr 10, 2025 pm 10:03 PM

Redis數據過期策略有兩種:定期刪除:定期掃描刪除過期鍵,可通過 expired-time-cap-remove-count、expired-time-cap-remove-delay 參數設置。惰性刪除:僅在讀取或寫入鍵時檢查刪除過期鍵,可通過 lazyfree-lazy-eviction、lazyfree-lazy-expire、lazyfree-lazy-user-del 參數設置。

See all articles