目錄
#2-2 hash型別資料的擴充運算" >#2-2 hash型別資料的擴充運算
3-3 list業務場景" >3-3 list業務場景
#4. set類型" >#4. set類型
5. sorted_set類型" > 5. sorted_set類型
首頁 資料庫 Redis 一文搞定Redis五大資料類型及應用場景

一文搞定Redis五大資料類型及應用場景

May 25, 2020 pm 04:53 PM
redis

1.string型別

1-1 string型別資料的基本運算

新增/ 修改資料:set key value

# 取得資料:get key

# #刪除資料:

del key

新增/ 修改多個資料:mset key value key1 value1

## 取得多個資料:

mget key key1

追加資訊到原始資料後邊(不存在時則新增):

append key value

1-2 string類型增減運算

設定數值增加指定範圍的值:incr key 預設每次加1 | incrby key value 每次新增value
設定資料減少指定範圍:decr key | decrby key value 跟新增是一回事

#應用程式場景

控制資料庫表主鍵id,為資料庫表提供主鍵產生策略,確保資料表主鍵的一致性。

1-3 string類型時效運算

設定過期時間:setex key seconds value

應用場景

實作限制時間投票功能:例如一個微信一個小時可以投一次
實作熱點資訊:例如電商業界熱門商品、新聞網站熱門新聞

1-4 string類型的應用程式場景

微博大V首頁高頻的訪問,對於粉絲數、關注數、微博數都需要時時更新。這個就屬於高頻訊息了,我們就可以使用redis的string類型來解決
一文搞定Redis五大資料類型及應用場景
在redis中為大V設定使用者訊息,以使用者主鍵和屬性為鍵值,以下為實現案例。
一文搞定Redis五大資料類型及應用場景
在這裡需要簡單的說一下key的命名規則:以表名 主鍵 主鍵值 欄位 :欄位值。以這樣的規則來命名就可以很好的來管理我們的鍵值。

我們也可以用另一種方​​式來實現,就是鍵後邊直接跟一個結構,例如
一文搞定Redis五大資料類型及應用場景
以上的兩個方式都是可以實現的,只是第一種可以很方便的對任意一個值進行管理,第二種是改一個都得改一次,看業務場景,定時刷新就行。

2. hash型別

#2-1 hash型別資料的基本運算

新增/ 修改資料:hset key field value

取得資料:hget key field | hgetall key

刪除資料:hdel key field field1

新增/ 修改多個資料:hmset key field value field1 值1

## 取得多個資料:

hmget key field field1

取得表格中欄位數量:

hlen key

# 取得表中是否有某個欄位:

hexists key field

#2-2 hash型別資料的擴充運算

取得hash表中所有的欄位值:hkeys key

以取得hash表中所有的欄位值:hvals key

設定指定欄位的數值增加指定範圍的值:hincrby key field increment | hincrbyfloat key field increment

2-3 hash業務場景之購物車

#

此圖來自網路非自製,只是模擬購物車場景
一文搞定Redis五大資料類型及應用場景
在上圖中,我們可以看到購物車裡的信息,下來咱們使用redis來對這個購物車的實現。

這裡實作了一個新增購物車和取得購物車,keys的命名為表名主鍵主鍵值
一文搞定Redis五大資料類型及應用場景
在上圖中,我們會有一個問題就是商品資訊儲存會大量重複,所有我們也需要將商品單獨給一直hash。如下圖,只儲存商品id
一文搞定Redis五大資料類型及應用場景
這裡提供了倆種設定方式,一種是設定多個字段,一種是直接儲存為json。資訊不常變動的話可以使用json
一文搞定Redis五大資料類型及應用場景
給大家在提供一個方法hsetnx key field value,如果有則不進行添加,沒有則添加。這個功能就使用在不同的使用者新增相同的商品時不會執行覆寫和無用操作
一文搞定Redis五大資料類型及應用場景

3. list類型

資料儲存需求:儲存多個數據,並對資料進行儲存空間的順序進行區分
所需的資料結構:一個儲存空間保存多個數據,並且透過資料可以體現進入順序
list類型:保存多個數據,底層使用雙向鍊錶儲存結構實作

#3-1 list類型資料的基本操作

新增/ 修改資料:lpush key value value1 | rpush key value value1

取得資料:lrange key start end | lindex key index | llen key

##刪除資料:rpop key | lpop key

一文搞定Redis五大資料類型及應用場景

############################################################### ###3-2 list類型資料的擴充操作######

在規定時間內取得並移除資料:blpop key1 key2 timeout | brpop key1 key2 timeout

##這個功能簡單的寫一個案例,容易理解

左邊這個終端指令執行後會等待30秒的時間返回刪除的資料

當右邊的新增指令執行後左邊會直接回傳回傳刪除的資料


一文搞定Redis五大資料類型及應用場景

在上邊我們知道了list的基礎操作執行lpop key 或者rpop key可以從做或從右進行刪除,但是現在有個場景是朋友圈點讚業務,然後從中間取消資料。案例如下圖

我們先往list5裡邊加入a b c d
然後移除c
在檢視就剩下a b d了
一文搞定Redis五大資料類型及應用場景



一文搞定Redis五大資料類型及應用場景

新的儲存需求:儲存大量的數據,在查詢方便提供更高的效率

需要的儲存結構:能夠保存大量的數據,高效的內部儲存機制,便於查詢set類型:與hash儲存結構完全相同,僅儲存鍵,不儲存值(nil),且值是不允許重複的

# #######################4-1 set類型資料的基本操作############新增/ 修改資料:# ##sadd key member member1#########

取得資料:smembers key

#刪除資料:srem key member1

#取得集合資料總量:scard key

#判斷集合中是否包含指定資料:sismember key member

一文搞定Redis五大資料類型及應用場景

#

4-2 set類型資料擴充運算

#隨機取得集合中指定數量的資料:srandmember key count

#隨機取得集合中某個資料並將改資料集移除集合:spop key

4-3 set類型業務場景推薦資訊

隨機推送熱點資訊、熱點新聞、熱賣旅遊、應用app推薦、關注推薦等

由於最近咔咔在寫discuz,這個案例就以實現關注推薦。

案例一:根據一定的推薦機制在set裡邊存放對應的用戶,然後每次進行隨機獲取2位需要推薦的用戶

一文搞定Redis五大資料類型及應用場景

#案例二:根據一定的推薦機制在set裡邊存放對應的用戶,然後根據日期每天推薦的用戶都不能重複

一文搞定Redis五大資料類型及應用場景

4-4 set類型業務場景挖掘使用者關係

兩個集合的交、並且、差集

sinter key key1
sunion key key1
sdiff key key1
登入後複製

兩個集合的交、並、差集並儲存到指定集合中

sinterstore destination key1 key2
sunionstore destination key1 key2
sdiffstore destination key1 key2
登入後複製

一文搞定Redis五大資料類型及應用場景
案例:我们需要挖掘一个信息的共同好友。例如微信公众号的共同关注好友数量、QQ添加新好友的推荐机制、深度挖掘用户直接的联系

就根据上述案例,我们可以使用差集来实现qq的有可能认识的好友。

4-5 set类型业务场景 实现网站的PV UV IP的记录

PV直接使用string类型的incr统计即可

UV和IP都是独立不重复的,使用set来操作。

在上边我们知道set有一个特性就是不能重复,我们就可以根据这一点来轻松实现这个功能。然后使用scard key 来统计数量。

至於UV是獨立訪客,使用本地的cookie來實作就可以,方法一樣把cookie傳給redis做記錄即可
一文搞定Redis五大資料類型及應用場景

5. sorted_set類型

在之前的四個類型中都不支持排序的,下來咱們看的sorted_set類型是既支持存儲大數據,也支持排序功能

5-1. sorted_set型別基本運算

新增資料:zadd key score member

取得資料:zrange key start stop | zrevrange key start stop

#

刪除資料:zrem key member

一文搞定Redis五大資料類型及應用場景
#依條件取得資料:zrangebyscore key min max limit | zrevrangescore key max min

條件刪除資料:zremrangebyrank key start stop | zremrangebyscore key min max

#########################################################################################################################################################################################################取得集合資料總量:###zcard key | zcount key min max##########

集合交、並操作:zinterstore destination numkeys key | zunionstore destination numkeys key(這個指令就不做演示了,可以自己查看文檔。跟set有點類似,只不過會把所有交集的和給加起來。然後這裡邊有個numkeys這個參數是一共幾個key進行計算後邊的key就需要幾個)

取得資料對應的索引:zrank key member | zrevrank key member

#socre值取得與修正:zscore key member | zincrby key increment member

總結

###以上就是redis資料型態的簡單介紹與具體應用,後文會針對具體需求在進行實戰。 ######

以上是一文搞定Redis五大資料類型及應用場景的詳細內容。更多資訊請關注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脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++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 08:45 PM

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

redis怎麼啟動服務器 redis怎麼啟動服務器 Apr 10, 2025 pm 08:12 PM

啟動 Redis 服務器的步驟包括:根據操作系統安裝 Redis。通過 redis-server(Linux/macOS)或 redis-server.exe(Windows)啟動 Redis 服務。使用 redis-cli ping(Linux/macOS)或 redis-cli.exe ping(Windows)命令檢查服務狀態。使用 Redis 客戶端,如 redis-cli、Python 或 Node.js,訪問服務器。

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: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,可先檢查隊列是否存在再讀取元素。

redis底層怎麼實現 redis底層怎麼實現 Apr 10, 2025 pm 07:21 PM

Redis 使用哈希表存儲數據,支持字符串、列表、哈希表、集合和有序集合等數據結構。 Redis 通過快照 (RDB) 和追加只寫 (AOF) 機制持久化數據。 Redis 使用主從復制來提高數據可用性。 Redis 使用單線程事件循環處理連接和命令,保證數據原子性和一致性。 Redis 為鍵設置過期時間,並使用 lazy 刪除機制刪除過期鍵。

redis怎麼讀源碼 redis怎麼讀源碼 Apr 10, 2025 pm 08:27 PM

理解 Redis 源碼的最佳方法是逐步進行:熟悉 Redis 基礎知識。選擇一個特定的模塊或功能作為起點。從模塊或功能的入口點開始,逐行查看代碼。通過函數調用鏈查看代碼。熟悉 Redis 使用的底層數據結構。識別 Redis 使用的算法。

See all articles