Redis-基本數據類型

Redis支持的基本數據類型:String、hash、list、Set、Zset

一、String

  • 特點

    • 可以存儲三種類型 int、float、string
  • 運用場景

    • 緩存:存儲HTML片段、用戶會話(Session)
    • 計數器:網站訪問量、點贊數(incr方法)。允許一定的延遲,先寫入Redis再定時同步到數據庫
    • 限流:以訪問者的IP和其他信息作為KEY,訪問一次增加一次技術,超過次數返回false
    • 分布式鎖:通過SETNX實現簡單鎖機制。

二、Hash

  • 特點:
    • Hash用來存儲多個無序的鍵值對。最大存儲數量2^32 - 1 (40億左右)
    • 鍵值對集合,適合存儲對象(如用戶信息)。
    • 支持單獨操作某個字段(如 HSET user:1 age 30),避免序列化整個對象。
    • 底層使用壓縮列表(小數據)或哈希表(大數據),內存高效。
  • 優點:
    • ?把所有相關的值都聚集到一個key中,節省內存空間
    • 只是用一個key,減少key沖突
    • 當需要批量獲取值的時候,只需要使用一個命令,減少內存/IO/CPU的消耗
  • 缺點:
    • Field 不能單獨設置過期時間
    • 需要考慮數據量分布的問題(field非常多的時候,無法分布到多個節點)
  • 使用場景
    • String能做的Hash都能做
    • 對象存儲:用戶信息、商品詳情(字段可部分更新)。

    • 配置管理:系統配置項按組存儲,便于批量獲取。

????????

三、List

  • 特點
    • 基于雙向鏈表實現,支持在頭部和尾部快速 插入/刪除元素(時間復雜度 O(1))。
    • 元素可以重復,按插入順序排列。
    • 可以通過索引訪問,但是中間操作效率低(時間復雜度O(n))。
  • 常用命令
    • lpush + lpop = Stack (棧)
    • lpush + rpop = Queue (隊列)
    • lpush + ltrim = Capped Collection (有限集合)
    • lpush + brpop = Message Queue (消息隊列)
  • 阻塞的彈出操作:blpop / brpop,可以設置超時時間(單位:秒)
    • blpop:blpop key1 timeout,移除并獲取列表第一個元素,如果列表沒有元素會阻塞列表,直到等待超時發現可彈出元素為止。
    • brpop:brpop key1 timeout,移除并獲取列表最后一個元素,如果列表沒有元素會阻塞列表,直到等待超時發現可彈出元素位置。
  • 使用場景
    • 消息隊列生產者通過 lpush 推送消息,消費者通過 rpop 拉取(需輪詢,建議使用Stream類型代替。
    • 最新動態:存儲用戶的最新文章、評論(如 lpush+ltrim 保持固定長度)。
    • 阻塞隊列:使用 blpop / brpop 實現阻塞式讀取。

四、Set

  • 特點:
    • 無序 且 元素唯一(自動去重)
    • 支持集合運算(交集-sinter、并集-sunion、差集-sdiff)
    • 查詢元素是否存在 - 時間復雜度為O(1)。
  • 使用場景

    • 標簽系統:用戶興趣標簽(SADD user:1:tags tag1 tag2)。


    • 唯一性約束:統計文章的唯一閱讀用戶。點贊、簽到、打卡。


    • 社交關系:共同關注(交集)、可能認識的人(差集)。

五、有序集合-Zset

  • 特點
    • 元素唯一,每個元素關聯一個score(分數)用于排序
    • 按 score 升序排列,支持范圍查詢(如 ZrangeByScore)。
    • 底層使用跳躍表哈希表,保證高效查詢和排序。
  • 使用場景
    • 排行榜:游戲積分排名、熱搜榜(按score排序)。
    • 延遲隊列:將任務到期時間作為score,定時輪詢獲取到期任務。
    • 帶權重的隊列:優先處理高優先級的任務。

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

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

相關文章

Tomcat的部署

Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬于輕量級應用服務器,在中小型系統和 并發訪問用戶不是很多的場合下被普遍使用,Tomcat 具有處理HTML頁面的功能,它還是一個Servlet和 JSP容器 官網:Apache Tomcat - Welco…

Linux的TCP連接數到達2萬,其中tcp_tw、tcp_alloc、tcp_inuse都很高,可能出現什么問題

當 Linux 系統的 TCP 連接數達到 2 萬,且 /proc/net/sockstat 中的 tcp_tw(TIME_WAIT 連接)、tcp_alloc(已分配但未完全建立的連接)和 tcp_inuse(正在使用的連接)均處于高位時,可能會引發以下問題: 一、關鍵指標分析 通過 /proc/net/sockstat 可以查看 TCP 連接狀態:…

服務器數據恢復—Raid6陣列硬盤故障掉線,上層虛擬機數據如何恢復?

服務器數據恢復環境&故障: 一臺由16塊硬盤組成的raid6磁盤陣列。磁盤陣列中有一塊硬盤因為物理故障掉線,導致服務器上層虛擬機無法正常使用,部分分區丟失,重啟物理服務器后發現數據丟失。 服務器數據恢復過程: 1、…

Unhandled exception: org.apache.poi.openxml4j.exceptions.InvalidFormatException

代碼在main方法里面沒有報錯,在Controller里面就報錯了。 原來Controller類里面少了行代碼 import org.apache.poi.openxml4j.exceptions.InvalidFormatException; 加上去就解決了。

RISC-V debug專欄2 --- Debug Module(DM)

Debug Module(DM)的核心功能 DM 就像一個翻譯官,負責把調試器的抽象指令(比如 “暫停處理器”)轉換成硬件能聽懂的具體操作。它必須實現以下基本功能: 必要功能(必須實現)&#xff…

infinityfree最新免費建站詳細教程_無需備案_5G空間_無限流量_免費域名_免費SSL

一、明確目標—是否要使用 1.為什么選擇InfinityFree? 對于初學者、學生或只是想嘗試網站搭建的個人用戶來說,InfinityFree提供了一個絕佳的免費解決方案。這個國外免費的虛擬主機服務提供: 5GB存儲空間 - 足以存放個人博客、作品集或小型…

我與數學建模之終章

自美賽失利之后,就開始忙活別的了,因為數學競賽國賽當時還沒收到通知,所以就在準備寫論文,最后論文拿去交挑戰杯競賽了,拿了個校一省一國三。 在寫論文過程中,通知去上海參加數學競賽,其實當時…

大學生機器人比賽實戰(三)經驗篇

大學生機器人比賽一等獎實戰指南:從組隊到奪冠的全流程策略 參加大學生機器人比賽并斬獲一等獎是許多理工科學子的夢想,這不僅是對技術能力的認可,更是未來深造和就業的重要加分項。本文將從團隊組建、技術攻關、項目管理、比賽策略和心理建…

關于UDP端口掃描概述

盡管互聯網上大多數流行服務都基于 TCP 協議運行,但 UDP 服務也廣泛部署。DNS、SNMP 和 DHCP(注冊端口 53、161/162 和 67/68)是最常見的服務之一。 由于 UDP 掃描通常比 TCP 掃描更慢、更困難,一些安全審計人員可能會忽略這些端…

美團滑塊 分析

聲明 本文章中所有內容僅供學習交流使用,不用于其他任何目的,抓包內容、敏感網址、數據接口等均已做脫敏處理,嚴禁用于商業用途和非法用途,否則由此產生的一切后果均與作者無關! 逆向過程 距離識別不準簡單學習一下&…

SpringBoot配置文件多環境開發

目錄 一、設置臨時屬性的幾種方法 1.啟動jar包時,設置臨時屬性 ?2.idea配置臨時屬性 3.啟動類中創建數組指定臨時屬性 二、多環境開發 1.包含模式 2.分組模式 三、配置文件的優先級 1.bootstrap 文件優先: 2.特定配置文件優先 3.文件夾位置優…

開發一個小程序需要多久時間?小程序軟件開發周期

開發一個小程序所需時間受多種因素影響,以下為你詳細列舉: 一、需求復雜度。若只是簡單展示類小程序,如企業宣傳、產品介紹,功能單一,大概 1 - 2 周可完成。若涉及復雜交互,像電商小程序,涵蓋商…

Linux 基礎入門指南:用戶管理、基本命令(一)

摘要:Xshell登錄、用戶管理、修改字體與配色方案。操作系統概要。Linux文件系統基礎。相關命令:pwd, ls, cd, mkdir, rmdir, rm,touch, nano, tree; adduser, passwd 目錄 一、系統登錄與用戶管理 1. 登錄方式 (1)命令行登錄 …

【python】:使用Qt Creator 管理python項目

一、引言(也許適合小眾的你) 如果你跟我一樣,有時候開發點小項目,既有Qt的需求,又有python項目需求,除了VS以外,Qt Creator同時滿足這兩種語言的項目開發需求和無縫項目切換,目前來看確實是比較…

【簡單數論】(模運算,快速冪,乘法逆元,同余,exgcd,gcd,歐拉函數,質數,歐拉篩,埃式篩,調和級數枚舉,約數,組合數)

數論 模運算 a m o d b a ? ? a / b ? b a\ mod \ b a - \lfloor a / b \rfloor \times b a mod ba??a/b?b n m o d p n \ mod\ p n mod p得到的結果的正負至于被除數 n n n有關 模運算的性質: ( a b ) m o d m ( ( a m o d m ) ( b m o d m ) ) m …

006貪心——算法備賽

跨步問題 跳躍游戲|| 問題描述 給定一個長度為 n 的 0 索引整數數組 nums。初始位置為 nums[0]。 每個元素 nums[i] 表示從索引 i 向后跳轉的最大長度。換句話說&#xff0c;如果你在 nums[i] 處&#xff0c;你可以跳轉到任意 nums[i j] 處: 0 < j < nums[i]i j &…

MySQL學習筆記(三)——圖形化界面工具DataGrip

目錄 1. 圖形化界面工具 2.下載 3. 安裝 3.1 安裝步驟 3.2 激活說明 4. 使用 4.1 漢化教程 4.2 使用 1. 圖形化界面工具 上述&#xff0c;我們已經講解了通過 DDL 語句&#xff0c;如何操作數據庫、操作表、操作表中的字段&#xff0c;而通過 DDL 語句執行在命令進行操…

編程題學習

acwing 826. 單鏈表 #include <iostream>using namespace std;const int N 100010;int idx, e[N], ne[N], head;void init() {head -1;idx 0; }void insert_head(int x) {e[idx] x;ne[idx] head;head idx ; }void delete_k_pos(int x, int k) {e[idx] x;ne[idx…

modelscope環境準備--裝conda、內網穿透、配置HuggingFace

1 準備anaconda #1、安裝包 wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh#2、提高權限 chmod x Anaconda3-2024.10-1-Linux-x86_64.sh#3、執行安裝命令 ./Anaconda3-2024.10-1-Linux-x86_64.sh#4、一直按Enter健繼續 yes繼續 Enter#5、手動激…

算法題(117):字符串的展開

審題&#xff1a; 本題需要我們根據題目的要求將字符串進行擴展 思路&#xff1a; 方法一&#xff1a;模擬法 一般來說題目字數和要求很多的題就是模擬題&#xff0c;模擬題特別需要注意的就是細節&#xff0c;在編寫代碼之前一定要把細節想清楚&#xff0c;否則很容易出錯。 分…