這篇文章為大家帶來了關於Redis的相關知識,其中主要介紹了關於常用資料結構的相關內容,最常用的有五種,分別是字串、哈希、列表、集合以及有序集合,下面一起來看一下,希望對大家有幫助。
推薦學習:Redis影片教學
#Redis常用資料結構
Redis提供了一些資料結構供我們往Redis存取數據,最常用的的有5種,字串(String)、哈希(Hash)、列表(list)、集合(set)、有序集合(ZSET)。
字串(String)
字串類型是Redis最基礎的資料結構。首先鍵都是字串類型,而且其他幾種資料結構都是在字串類型基礎上建構的,所以字串類型能為其他四種資料結構的學習奠定基礎。字串類型的值實際上可以是字串(簡單的字串、複雜的字串(例如JSON、XML))、數字(整數、浮點數),甚至是二進位(圖片、音訊、視訊),但是值最大不能超過512MB。
(雖然Redis是C寫的,C裡面有字串,但是處於種種考慮,Redis還是自己實作了字串型別)
操作指令
set 設定值
set key value
set指令有幾個選項:
ex seconds: 為鍵設定秒級過期時間。
px milliseconds: 為鍵設定毫秒過期時間。
nx: 鍵必須不存在,才可以設定成功,用於新增(分散式鎖定常用)。
xx: 與nx相反,鍵必須存在,才可以設定成功,用於更新。
從執行效果來看,ex參數和expire指令基本上一樣。還有一個需要特別注意的地方是如果一個字串已經設定了過期時間,然後你呼叫了set 方法修改了它,它的過期時間會消失。
而nx和xx執行效果如下
除了set選項,Redis 也提供了setex和setnx兩個指令:
setex key seconds value
setnx key value
setex和 setnx的作用和ex和nx選項是一樣的。也就是,setex為鍵設定秒級過期時間,setnx設定時鍵必須不存在,才可以設定成功。
setex範例:
setnx範例:
因為鍵foo-ex已存在,所以setnx失敗,回傳結果為0,鍵foo-ex2不存在,所以setnx成功,回傳結果為1。
有什麼應用場景嗎?以setnx指令為例子,由於Redis的單執行緒指令處理機制,如果有多個客戶端同時執行setnx key value,根據setnx的特性只有一個客戶端能設定成功,setnx可以作為分散式鎖定的一種實作方案。當然分散式鎖沒有不是只有一個指令就OK了,其中還有很多的東西要注意,我們後面會用單獨的章節來講述基於Redis的分散式鎖。
get 取得值
如果要取得的鍵不存在,則傳回nil(空):
mset 批次設定值
透過mset指令一次設定4個鍵值對
##mget 批次取得值
Redis可以支撐每秒數萬的讀寫操作,但這指的是Redis服務端的處理能力,對於客戶端來說,一次指令除了指令時間還是有網路時間,假設網路時間為1毫秒,指令時間為0.1毫秒(依照每秒處理1萬條指令算),那麼執行1000次get指令需要1.1秒(10001 10000.1=1100ms),1次mget指令的需要0.101秒(1 1 10000.1=101ms)。
Incr 數字運算
incr指令用於對值做自增運算,傳回結果分為三種情況:
值不是整數,返回錯誤。
值是整數,傳回自增後的結果。
鍵不存在,依值為0自增,傳回結果為1。
除了incr指令,Redis提供了decr(自減)、 incrby(自增指定數字)、decrby(自減指定數字)、incrbyfloat(自增浮點數),具體效果請同學自行嘗試。
append追加指令
append可以向字串尾部追加值
strlen 字串長度
傳回字串長度
注意:每個中文佔3個位元組
getset 設定並且傳回原值
getset和set一樣會設定值,但是不同的是,它同時會傳回鍵原來的值
setrange 設定指定位置的字元
下標從0開始計算。
getrange 截取字串
getrange 截取字串中的一部分,形成一個子字串,需要指明開始和結束的偏移量,截取的範圍是個閉區間。
指令的時間複雜度
#字串這些指令中,除了del 、mset、 mget支援多個鍵的批次操作,時間複雜度和鍵的個數相關,為O(n),getrange和字串長度相關,也是O(n),其餘的指令基本上都是O(1)的時間複雜度,在速度上還是非常快的。
使用場景
字串類型的使用場景很廣泛:
快取功能
##Redis作為快取層,MySQL作為儲存層,絕大部分請求的資料都是從Redis中取得。由於Redis具有支撐高並發的特性,所以快取通常能起到加速讀寫和降低後端壓力的作用。計數
使用Redis 作為計數的基礎工具,它可以實現快速計數、查詢快取的功能,同時資料可以非同步落地到其他資料來源。共享Session
一個分散式Web服務將使用者的Session資訊(例如使用者登入資訊)保存在各自伺服器中,這樣會造成一個問題,出於負載平衡的考慮,分散式服務會將用戶的存取權平衡到不同伺服器上,用戶刷新一次訪問可能會發現需要重新登錄,這個問題是用戶無法容忍的。 為了解決這個問題,可以使用Redis將用戶的Session進行集中管理,,在這種模式下只要保證Redis是高可用和擴展性的,每次用戶更新或者查詢登錄信息都直接從Redis中集中獲取。限速
例如,許多應用程式出於安全的考慮,會在每次進行登入時,讓用戶輸入手機驗證碼,從而確定是否是用戶本人。但為了簡訊介面不被頻繁存取,會限制使用者每分鐘取得驗證碼的頻率,例如一分鐘不能超過5次。有些網站限制一個IP位址不能在一秒鐘之內方問超過n次也可以採取類似的思路。哈希(Hash)
Java裡提供了HashMap,Redis中也有類似的資料結構,就是哈希類型。但要注意,哈希類型中的映射關係叫作field-value,注意這裡的value是指field對應的值,不是鍵對應的值。 操作指令基本上,雜湊的操作指令和字串的操作指令很類似,很多指令在字串類型的指令前面加上了h字母,代表是操作哈希類型,同時也要指明要操作的field的值。 hset設值hset user:1 name lijin如果設定成功會回傳1,反之會回傳0。另外Redis提供了hsetnx指令,它們的關係就像set和setnx指令一樣,只不過作用域由鍵變成field。
hget取值
hget user:1 name
如果鍵或field不存在,會傳回nil。
hdel刪除field
hdel會刪除一個或多個field,傳回結果為成功刪除field的數量。
hlen計算field個數
#hmset批次設值
hmget批量取值
hexists判斷field是否存在
若存在回傳1,不存在返回0
hkeys取得所有field
它傳回指定雜湊鍵所有的field
#name | age | |
---|---|---|
lijin | 18 | |
msb | 20 |
以上是Redis常用資料結構(整理分享)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

redisisbothadatabaseandaserver.1)asadatabase,ituseSin-memorystorageforfastaccess,ifealforreal-timeapplications andCaching.2)Asaserver,ItsupportsPub/submessagingAndluAsessingandluAsessingandluascriptingftingftingftingftingftingftingftingfinteral-timecommunicationandserverserverserverserverserverserverserver-soperations。

Redis是NoSQL數據庫,提供高性能和靈活性。 1)通過鍵值對存儲數據,適合處理大規模數據和高並發。 2)內存存儲和單線程模型確保快速讀寫和原子性。 3)使用RDB和AOF機制進行數據持久化,支持高可用性和橫向擴展。

Redis是一种内存数据结构存储系统,主要用作数据库、缓存和消息代理。它的核心特点包括单线程模型、I/O多路复用、持久化机制、复制与集群功能。Redis在实际应用中常用于缓存、会话存储和消息队列,通过选择合适的数据结构、使用管道和事务、以及进行监控和调优,可以显著提升其性能。

Redis和SQL數據庫的主要區別在於:Redis是內存數據庫,適用於高性能和靈活性需求;SQL數據庫是關係型數據庫,適用於復雜查詢和數據一致性需求。具體來說,1)Redis提供高速數據訪問和緩存服務,支持多種數據類型,適用於緩存和實時數據處理;2)SQL數據庫通過表格結構管理數據,支持複雜查詢和事務處理,適用於電商和金融系統等需要數據一致性的場景。

REDISACTSASBOTHADATASTOREANDASERVICE.1)ASADATASTORE,ITUSESIN-MEMORYSTOOGATOFORFOFFASTESITION,支持VariousDatharptructuresLikeKey-valuepairsandsortedsetsetsetsetsetsetsets.2)asaservice,ItprovidespunctionslikeItionitionslikepunikeLikePublikePublikePlikePlikePlikeAndluikeAndluAascriptingiationsmpleplepleclexplectiations

Redis與其他數據庫相比,具有以下獨特優勢:1)速度極快,讀寫操作通常在微秒級別;2)支持豐富的數據結構和操作;3)靈活的使用場景,如緩存、計數器和發布訂閱。選擇Redis還是其他數據庫需根據具體需求和場景,Redis在高性能、低延遲應用中表現出色。

Redis在數據存儲和管理中扮演著關鍵角色,通過其多種數據結構和持久化機製成為現代應用的核心。 1)Redis支持字符串、列表、集合、有序集合和哈希表等數據結構,適用於緩存和復雜業務邏輯。 2)通過RDB和AOF兩種持久化方式,Redis確保數據的可靠存儲和快速恢復。

Redis是一種NoSQL數據庫,適用於大規模數據的高效存儲和訪問。 1.Redis是開源的內存數據結構存儲系統,支持多種數據結構。 2.它提供極快的讀寫速度,適合緩存、會話管理等。 3.Redis支持持久化,通過RDB和AOF方式確保數據安全。 4.使用示例包括基本的鍵值對操作和高級的集合去重功能。 5.常見錯誤包括連接問題、數據類型不匹配和內存溢出,需注意調試。 6.性能優化建議包括選擇合適的數據結構和設置內存淘汰策略。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

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

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器