Redis 最常用的 5 種數據類型

Redis 支持多種靈活的數據類型,每種類型針對特定場景優化。以下是 **Redis 最常用的 5 種數據類型**及其核心特點和應用場景:


1.?字符串(String)

  • 描述:最基本的數據類型,可存儲文本、數字(整數/浮點數)或二進制數據(≤512MB)。
  • 常用命令
    • SET key value:設置值
    • GET key:獲取值
    • INCR key:原子遞增(計數器)
    • SETNX key value:不存在時才設置(分布式鎖)
  • 場景
    • 緩存(HTML片段、用戶信息)
    • 計數器(訪問量、點贊數)
    • 分布式鎖(SETNX

2.?哈希(Hash)

  • 描述:鍵值對集合,適合存儲?對象(如用戶信息)。
  • 常用命令
    • HSET key field value:設置字段值
    • HGET key field:獲取字段值
    • HGETALL key:獲取所有字段和值
    • HINCRBY key field increment:遞增字段值
  • 場景
    • 用戶資料存儲(key=用戶ID,field=姓名/年齡等)
    • 商品屬性管理(key=商品ID,field=價格/庫存等)
    • 優勢:可單獨操作字段,避免序列化整個對象。

3.?列表(List)

  • 描述:按插入順序排序的?字符串列表,支持雙向操作。
  • 常用命令
    • LPUSH key value:左側插入
    • RPUSH key value:右側插入
    • LPOP key:左側彈出
    • LRANGE key start stop:獲取范圍數據
  • 場景
    • 消息隊列(LPUSH?+?BRPOP?實現生產者-消費者)
    • 最新動態(如朋友圈時間線)
    • 日志記錄(按時間順序存儲)

4.?集合(Set)

  • 描述無序且唯一?的字符串集合,支持交并差運算。
  • 常用命令
    • SADD key member:添加元素
    • SMEMBERS key:獲取所有元素
    • SINTER key1 key2:求交集
    • SISMEMBER key member:判斷元素是否存在
  • 場景
    • 標簽系統(如文章標簽)
    • 共同好友(SINTER?求交集)
    • 唯一性控制(如抽獎中獎用戶)

5.?有序集合(Sorted Set / Zset)

  • 描述:帶?分數(score)?的集合,元素按分數排序(分數可重復,值唯一)。
  • 常用命令
    • ZADD key score member:添加元素
    • ZRANGE key start stop:按排名范圍獲取
    • ZRANGEBYSCORE key min max:按分數范圍獲取
    • ZRANK key member:獲取排名
  • 場景
    • 排行榜(如游戲分數排名)
    • 延時隊列(分數=執行時間戳)
    • 熱點數據排序(分數=訪問次數)

其他實用類型補充:

  • 位圖(Bitmap)
    通過位操作存儲布爾值(如用戶簽到記錄,SETBIT user:sign:2024 100 1)。
  • HyperLogLog
    超小內存統計去重計數(如UV統計,誤差率0.81%)。
  • 地理空間(GEO)
    存儲經緯度,計算距離(GEODIST)、附近位置(GEORADIUS)。
  • 流(Stream)(Redis 5.0+):
    持久化消息隊列,支持消費者組(類似Kafka)。

選擇數據類型的關鍵原則:

  1. 數據結構匹配:存儲對象用 Hash,排序用 Zset,去重用 Set。
  2. 操作效率:Zset 按分數范圍查詢復雜度 O(log N),Hash 單字段操作 O(1)。
  3. 內存優化:小對象用 String,大對象用 Hash 分字段存儲。

💡?示例場景對比

  • 用戶信息存儲
    • ? 錯誤:用 String 存儲整個 JSON(修改需全量讀寫)
    • ? 正確:用 Hash 分字段存儲(可單獨更新年齡)
  • 排行榜
    • ? 錯誤:用 List + 手動排序
    • ? 正確:用 Zset 自動按分數排序

掌握這些類型及其適用場景,能極大提升 Redis 使用效率!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/94231.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/94231.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/94231.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【嵌入式】RK3588 對比 NVIDIA Jetson,Radxa Rock 5B vs Orange Pi 5 Max

RK3588這個芯片,適合AI應用么,為什么這么貴呢 AI 邊緣盒子里的旗艦芯 深度分析一下 RK3588(瑞芯微 Rockchip RK3588) 為什么被很多人關注在 AI 應用,以及它價格偏高的原因。 ?? 1. RK3588 的基本情況 制程:8nm(Samsung 8nm LP) CPU:8 核 big.LITTLE 架構(4 Cortex-…

暴雨讓高性能計算更“冷靜”

當AI大模型的參數突破萬億,當深地探測的精度邁向微米,當數字經濟的脈搏與千行百業深度共振,算力已成為驅動時代向前的核心引擎。然而,傳統風冷技術在高密度算力需求面前漸顯乏力——機柜內的熱浪如同無形的枷鎖,既制約…

SpringAI集成MCP

文章目錄1_調用公用MCP2_Stdio方式3_Stdio實現原理4_SSE方式5_自定義MCP客戶端6_MCP Server權限控制SpringAI 通過 SpringBoot 集成擴展了 MCP Java SDK ,提供了客戶端和服務端 starter,讓 AI 應用程序快速支持 MCP。接下來直接演示。 1_調用公用MCP 在…

Spring Start Here 讀書筆記:第10章 Implementing REST services

REST 服務可用于實現兩個應用之間的通訊,包括 Web 應用中的客戶端和服務器之間,移動應用與后端服務之間,或兩個后端服務之間。 10.1 使用 REST 服務在應用之間交換數據 REST端點是應用程序通過 Web 協議公開服務的方式,因此也稱…

SYBASE ASE、Oracle、MySQL/MariaDB、SQL Server及PostgreSQL在郵件/短信發送功能上的全面橫向對比報告

以下是對SYBASE ASE、Oracle、MySQL/MariaDB、SQL Server及PostgreSQL在郵件/短信發送功能上的全面橫向對比報告(截至2025年8月最新版本),涵蓋技術實現、配置復雜度、適用場景及權威評測:??一、郵件發送能力對比????1. Orac…

服務器與客戶端

目錄 一、服務器(Server) 核心特點 常見類型 二、客戶端(Client) 核心特點 常見類型 客戶端與服務器的交互流程 補充:與 “對等網絡(P2P)” 的區別 C/S模式 一、C/S 模式的核心原理 …

GaussDB 并發自治事務數達到最大值處理案例

1 業務背景自治事務(Autonomous Transactions)是一種高級特性,允許你在一個事務中執行另一個獨立的事務。這種機制特別有用,尤其是在需要在一個事務中執行多個操作但又不想因為其中一個操作失敗而影響整個事務的場景。2 業務影響在…

【傳奇開心果系列】Flet分頁自定義組件CustomPaginationComponent封裝版自定義模板

Flet分頁自定義組件CustomPaginationComponent封裝版自定義模板一、效果展示GIF動圖二、應用場景三、特色說明四、源碼下載地址一、效果展示GIF動圖 二、應用場景 圖片瀏覽應用: 用戶可以通過分頁組件瀏覽多張圖片,每點擊一次“上一頁”或“下一頁”按鈕…

數據安全——39頁解讀數字化轉型大數據安全基礎培訓方案【附全文閱讀】

適應人群為企業數據安全管理人員、IT 運維人員、數字化轉型決策者、網絡安全工程師及關注大數據安全的從業人員。主要內容圍繞數字化轉型中大數據安全展開,核心包括基礎概念(信息、數據與大數據的定義及區別,大數據 4V 特點與來源);安全風險(企業面臨的數據資產管理缺失、…

week3-[二維數組]小方塊

week3-[二維數組]小方塊 題目描述 如果四個數 a,b,c,da,b,c,da,b,c,d 可以分成兩組,每組兩個數,滿足每組里面的兩個數一樣,那么稱這四個數是好的。 比如,2,5,2,52,5,2,52,5,2,5 是好的,因它滿足兩組:222 與…

Swift 項目結構詳解:構建可維護的大型應用

Swift 項目結構詳解:構建可維護的大型應用一、基礎結構(推薦新手使用)二、組件化結構(企業級應用推薦)層級架構:MVVM Coordinator路由實現(Coordinator模式)三、通用組件實現DI&…

【實時Linux實戰系列】基于實時Linux的數字轉換器設計

在現代電子系統中,數字轉換器(如模數轉換器ADC和數模轉換器DAC)扮演著至關重要的角色。它們負責將模擬信號轉換為數字信號,或將數字信號轉換為模擬信號,從而實現信號的數字化處理和傳輸。在實時系統中,如工…

FastTracker:實時準確的視覺跟蹤

摘要 https://arxiv.org/pdf/2508.14370 傳統的多目標跟蹤(MOT)系統主要設計用于行人跟蹤,通常對其他物體類別的泛化能力有限。本文提出了一種能夠處理多種物體類型的通用跟蹤框架,特別強調在復雜交通場景中的車輛跟蹤。所提出的1方法包含兩個關鍵組件&a…

國產輕量級桌面GIS軟件Snaplayers從入門到精通(20)

國產輕量級桌面GIS軟件Snaplayers實操:打開圖層并顯示屬性信息1、根據數據格式選擇圖層文件2、加載圖層到地圖中,并在左側顯示圖層的屬性表格3、屬性表格分頁顯示Snaplayers研發團隊承諾:國產輕量級桌面GIS軟件Snaplayers永久免費并持續更新

快速入門flask應用(從入門到實戰)

目錄 前言: 了解一些網絡通信的概念 什么是網絡通信: 當我們訪問一個網址的時候發生了什么: 1. 解析 URL:明確訪問目標 2. DNS 域名解析:將 “名字” 轉為 “地址” 3. 建立連接:TCP 三次握手&#x…

C++/QT 開發技能樹詳解

一、 編程語言 (C)1. C基礎語法(數據類型、模板、命名空間)是什么: 這是構建C程序的基石。數據類型定義了變量存儲的數據種類和大小;模板允許編寫與數據類型無關的通用代碼;命名空間用于避免大型項目中的名稱沖突。如何…

Java多線程進階-死鎖與面試題解析

文章目錄Java多線程進階:死鎖與面試題解析一、并發編程的噩夢——死鎖1. 什么是死鎖?四個缺一不可的條件2. 如何避免死鎖?從破壞循環等待開始二、并發編程面試題全景解析1. 鎖與同步機制2. CAS 與原子操作3. JUC 工具與線程池4. 線程安全集合…

ZYNQ啟動流程——ZYNQ學習筆記11

ZYNQ SoC 的啟動由片上的 BootROM 開始。片上 BootROM 是 ZYNQ 芯片上的一塊非易失性存儲器,它包含了 ZYNQ 所支持的配置器件的驅動, 而且里面的代碼是不可修改的。 BootROM 中的代碼首先會在片外的非易失性存儲器中尋找一個頭文件, 頭文件里…

C++利用CerateProcess創建WPF進程并通過命名管道通訊

引言原因是我需要在C程序中調用另外一個WPF窗體打開或則關閉,進程之前通過通訊協議進行交互。由于使用不同語言開發,兩者都比較復雜不方便重寫,最方便的方法就是使用進程間通信,WPF窗體應用程序根據消息進行Show/Hide/Exit操作。函…

Seaborn數據可視化實戰

1. Seaborn基礎與實踐:數據可視化的藝術 2. Seaborn入門:環境搭建與基礎操作 3. Seaborn基礎圖表繪制入門 4. Seaborn數據可視化基礎:從內置數據集到外部數據集的應用 5. Seaborn顏色與樣式定制教程 6. Seaborn數據可視化入門:繪制…