緩存 --- Redis基本數據類型

緩存 --- Redis基本數據類型

  • Redis Intro
  • 5種基礎數據類型

Redis Intro

  • RedisRemote Dictionary Server)是一款開源的高性能鍵值存儲系統,常用于緩存、消息中間件和實時數據處理場景。以下是其核心特點、數據類型及典型使用場景:

核心特點

特性說明
基于內存數據存儲在內存中,讀寫速度極快(微秒級響應)。
持久化支持支持 RDB(快照)和 AOF(日志)兩種持久化方式,保障數據安全。
數據結構豐富提供字符串、哈希、列表、集合等 8 種數據結構
高可用與分布式支持主從復制、哨兵模式(Sentinel)和集群模式(Cluster),實現容災和水平擴展。
原子操作所有操作是原子的,支持事務和 Lua 腳本。
發布訂閱提供 Pub/Sub 模式,支持簡單的消息隊列功能。

5種基礎數據類型

String

  • String 是 redis 最基本的類型,你可以理解成與 Memcached 一模一樣的類型,一個 key 對應一個 value;
  • String 類型是二進制安全的,意思是 redis 的 string 可以包含任何數據。比如jpg圖片或者序列化的對象;
  • String 類型是 Redis 最基本的數據類型,String 類型的值最大能存儲 512MB;
    在這里插入圖片描述
序號語法描述
1SET key value設置指定 key 的值
2GET key獲取指定 key 的值
3GETRANGE key start end返回 key 中字符串值的子字符,end=-1 時表示全部
4SETBIT key offset value對 key 所儲存的字符串值,設置或清除指定偏移量上的位(bit)
5MSET key value [key value ...]同時設置一個或多個 key-value 對
6MGET key1 [key2..]獲取所有(一個或多個)給定 key 的值
7GETSET key value將給定 key 的值設為 value ,并返回 key 的舊值(old value)
8SETNX key value只有在 key 不存在時設置 key 的值
9STRLEN key返回 key 所儲存的字符串值的長度
10MSETNX key value [key value ...]同時設置一個或多個 key-value 對,當且僅當所有給定 key 都不存在
11INCR key將 key 中儲存的數字值增一
12DECR key將 key 中儲存的數字值減一
13INCRBY key increment將 key 所儲存的值加上給定的增量值
14DECRBY key decrement將 key 所儲存的值減少給定的增量值
15APPEND key value如果 key 已經存在并且是一個字符串,APPEND 命令將指定的 value 追加到該 key 原來值 value 的末尾
127.0.0.1:6379> set k1 tom
OK
127.0.0.1:6379> get k1
"tom"
127.0.0.1:6379> set k1 harry
OK
127.0.0.1:6379> get k1
"harry"
127.0.0.1:6379> set k2 5
OK
127.0.0.1:6379> INCR k2
(integer) 6
127.0.0.1:6379> get k2
"6"
127.0.0.1:6379> INCRBY k2 101
(integer) 107
127.0.0.1:6379> get k1
"harry"
127.0.0.1:6379> APPEND k1 Potter
(integer) 11
127.0.0.1:6379> get k1
"harryPotter"

List

  • Redis列表是簡單的字符串列表,按照插入順序排序。
  • 你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)一個列表最多可以包含 232 - 1 個元素 (4294967295, 每個列表超過40億個元素)
    在這里插入圖片描述
序號命令語法描述
1LPUSH key value1 [value2]將一個或多個值插入到列表頭部,壓子彈
2LPOP key移出并獲取列表的第一個元素,發射子彈
3LRANGE key start stop獲取列表指定范圍內的元素
4LPUSHX key value將一個值插入到已存在的列表頭部
5LLEN key獲取列表長度
6`LINSERT key BEFOREAFTER pivot value`
7LINDEX key index通過索引獲取列表中的元素
8LREM key count value移除列表元素
9LSET key index value通過索引設置列表元素的值
127.0.0.1:6379> LPUSH names zhangsan lisi wangwu
(integer) 3
127.0.0.1:6379> LLEN names
(integer) 3
127.0.0.1:6379> LRANGE names 0 2
1) "wangwu"
2) "lisi"
3) "zhangsan"
127.0.0.1:6379> LPUSHX names louis
(integer) 4
127.0.0.1:6379> LRANGE names 0 2
1) "louis"
2) "wangwu"
3) "lisi"

SET

  • Redis 的 Set 是 String 類型的無序(號)集合。集合中成員是唯一的,這就意味著集合中不能出現重復的數據。Redis 中集合是通過哈希表實現的,所以添加,刪除,查找的復雜度都是 O(1)。 集合中最大的成員數為 232 - 1 (4294967295, 每個集合可存儲40多億個成員)。
    在這里插入圖片描述
序號命令語法描述
1SADD key member1 [member2]向集合添加一個或多個成員
2SMEMBERS key返回集合中的所有成員
3SCARD key獲取集合的成員數
4SRANDMEMBER key [count]返回集合中一個或多個隨機數
5SISMEMBER key member判斷 member 元素是否是集合 key 的成員
6SREM key member1 [member2]移除集合中一個或多個成員
7SDIFF key1 [key2]返回給定所有集合的差集
8SINTER key1 [key2]返回給定所有集合的交集
9SUNION key1 [key2]返回所有給定集合的并集
10SPOP key移除并返回集合中的一個隨機元素
11SSCAN key cursor迭代集合中的元素
127.0.0.1:6379> SADD course redis
(integer) 1
127.0.0.1:6379> SADD course mysql
(integer) 1
127.0.0.1:6379> SADD course redis
(integer) 0
127.0.0.1:6379> SADD course mongodb
(integer) 1
127.0.0.1:6379> SMEMBERS course
1) "mongodb"
2) "mysql"
3) "redis"
127.0.0.1:6379> SRANDMEMBER course
"mongodb"
127.0.0.1:6379> SRANDMEMBER course
"redis"
127.0.0.1:6379> SRANDMEMBER course
"mysql"
127.0.0.1:6379> SRANDMEMBER course
"mongodb"
127.0.0.1:6379> SRANDMEMBER course
"mysql"
127.0.0.1:6379> SMEMBERS course
1) "mongodb"
2) "mysql"
3) "redis"

ZSET

  • Redis 有序集合和集合一樣也是string類型元素的集合且不允許重復的成員。不同的是每個元素都會關聯一個double類型的分數
  • redis正是通過分數來為集合中的成員進行從小到大的排序。有序集合的成員是唯一的,但分數(score)卻可以重復。
  • 集合是通過哈希表實現的,所以添加,刪除,查找的復雜度都是O(1)。 集合中最大的成員數為 232 - 1 (4294967295, 每個集合可存儲40多億個成員)。
    在這里插入圖片描述
序號命令語法描述
1ZADD key score1 member1 [score2 member2]向有序集合添加一個或多個成員,或者更新已存在成員的分數
2ZCARD key獲取有序集合的成員數
3ZCOUNT key min max計算在有序集合中指定區間分數的成員數
4ZRANK key member返回有序集合中指定成員的索引
5ZSCORE key member返回有序集中,成員的分數值
6ZREM key member [member ...]移除有序集合中的一個或多個成員
127.0.0.1:6379> ZADD leaderboard 100 "Alice"
(integer) 1
127.0.0.1:6379> ZADD leaderboard 200 "Bob"
(integer) 1
127.0.0.1:6379> ZADD leaderboard 150 "Charlie"
(integer) 1
127.0.0.1:6379> ZADD leaderboard 100 "Alice"
(integer) 0
127.0.0.1:6379> ZRANGE leaderboard 0 -1 WITHSCORES
1) "Alice"
2) "100"
3) "Charlie"
4) "150"
5) "Bob"
6) "200"
127.0.0.1:6379> ZRANK leaderboard "Charlie"
(integer) 1
127.0.0.1:6379> ZREVRANK leaderboard "Charlie"
(integer) 1
127.0.0.1:6379> ZSCORE leaderboard "Bob"
"200"
127.0.0.1:6379> ZINCRBY leaderboard 50 "Alice"
"150"
127.0.0.1:6379> ZRANGE leaderboard 0 -1 WITHSCORES
1) "Charlie"
2) "150"
3) "Alice"
4) "150"
5) "Bob"
6) "200"
127.0.0.1:6379> ZCOUNT leaderboard 100 200
(integer) 3
127.0.0.1:6379> ZREM leaderboard "Charlie"
(integer) 1
127.0.0.1:6379> ZRANGE leaderboard 0 -1 WITHSCORES
1) "Alice"
2) "150"
3) "Bob"
4) "200"操作說明:
1. ZADD:向 ZSET 中添加成員及其分數。
2. RANGE:按分數從小到大返回 ZSET 中的成員及其分數。
3. ZRANK:返回成員在 ZSET 中的排名(從小到大)。
4. REVRANK:返回成員在 ZSET 中的排名(從大到小)。
5. ZSCORE:返回指定成員的分數。
6. ZINCRBY:增加指定成員的分數。
7. ZCOUNT:返回分數在指定范圍內的成員數量。
8. ZREM:移除 ZSET 中的指定成員。

HASH

  • Redis hash 是一個 string 類型的 field 和 value 的映射表,hash 特別適合用于存儲對象。Redis 中每個 hash 可以存儲 232 - 1 鍵值對(40多億)。
    在這里插入圖片描述
序號命令語法描述
1HSET key field value將哈希表 key 中的字段 field 的值設為 value
2HGET key field獲取存儲在哈希表中指定字段的值
3HGETALL key獲取在哈希表中指定 key 的所有字段和值
4HEXISTS key field查看哈希表 key 中,指定的字段是否存在
5HKEYS key獲取所有哈希表中的字段
6HVALS key獲取哈希表中所有值
7HLEN key獲取哈希表中字段的數量
8HMGET key field1 [field2]獲取所有給定字段的值
9HMSET key field1 value1 [field2 value2]同時將多個 field-value (域-值)對設置到哈希表 key 中
127.0.0.1:6379> HMSET hpe name zhangsan age 18 gender men birth 2000-01-01
OK
127.0.0.1:6379> HKEYS hpe
1) "name"
2) "age"
3) "gender"
4) "birth"
127.0.0.1:6379> HvalS hpe
1) "zhangsan"
2) "18"
3) "men"
4) "2000-01-01"
127.0.0.1:6379> HGETALL hpe
1) "name"
2) "zhangsan"
3) "age"
4) "18"
5) "gender"
6) "men"
7) "birth"
8) "2000-01-01"

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

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

相關文章

Redis命令——list

列表類型是用來存儲多個有序的字符串,列表中的每個字符串稱為元素(element),?個列表最多可以存儲個元素 在 Redis 中,可以對列表兩端插入(push)和彈出(pop),…

Android Jetpack Compose 狀態管理解析:remember vs mutableStateOf,有啥不一樣?為啥要一起用?

🌱《Jetpack Compose 狀態管理解析:remember vs mutableStateOf,有啥不一樣?為啥要一起用?》 在 Jetpack Compose 的世界里,UI 是響應式的。這意味著當狀態發生變化時,UI 會自動重組&#xff0…

使用 PCL 和 Qt 實現點云可視化與交互

下面我將介紹如何結合點云庫(PCL)和Qt框架(特別是QML)來實現點云的可視化與交互功能&#xff0c;包括高亮選擇等效果。 1. 基本架構設計 首先需要建立一個結合PCL和Qt的基本架構&#xff1a; // PCLQtViewer.h #pragma once#include <QObject> #include <pcl/point…

mybatis plus打印sql日志到指定目錄

1、mybatis plus打印sql日志 參考文檔&#xff1a;mybatis plus打印sql日志_mybatisplus日志打印-CSDN博客 2、修改 修改InfoLevelLogger Override public void debug(String s) {// 修改這里logger.info(s);log.debug(s); } 增加&#xff1a;log.debug(s); 修改logback.x…

vue3 watch和watchEffect 的用法和區別

在 Vue 3 里&#xff0c;watch 和 watchEffect 都是用于響應式數據變化的 API&#xff0c;但它們在使用方法和應用場景上存在差異。下面詳細介紹它們的用法和區別。 用法 watch watch 用于監聽特定的響應式數據源&#xff0c;當數據源發生變化時&#xff0c;會執行相應的回調…

Qt中修改了UI設計文件后編譯不生效問題的解決辦法

復制工程過來后&#xff1a; 1、刪除build文件 2、刪除.user文件&#xff0c;恢復為文件最初的那樣 3、執行make distclean,刪除所有由先前構建過程生成的文件 4、再次打開工程&#xff0c;修改ui文件編譯生效&#xff01;

EtherCAT轉ProfiNet邊緣計算網關配置優化:汽車制造場景下PLC與機器人協同作業案例

1.行業背景與需求分析 智能汽車焊裝車間是汽車制造的核心工藝環節&#xff0c;某德國豪華品牌在其上海MEB工廠新建的焊裝車間中&#xff0c;采用西門子S7-1500PLC作為ProfiNet主站&#xff0c;負責整線協調與質量追溯&#xff1b;同時部署KUKAKR1500Titan機器人&#xff08;Eth…

day46—雙指針-兩數之和-輸入有序數組(LeetCode-167)

題目描述 給你一個下標從 1 開始的整數數組 numbers &#xff0c;該數組已按 非遞減順序排列 &#xff0c;請你從數組中找出滿足相加之和等于目標數 target 的兩個數。如果設這兩個數分別是 numbers[index1] 和 numbers[index2] &#xff0c;則 1 < index1 < index2 &l…

線性代數 | 知識點整理 Ref 1

注&#xff1a;本文為 “線性代數 | 知識點整理” 相關文章合輯。 因 csdn 篇幅合并超限分篇連載&#xff0c;本篇為 Ref 1。 略作重排&#xff0c;未整理去重。 圖片清晰度限于引文原狀。 如有內容異常&#xff0c;請看原文。 線性代數知識匯總 Arrow 于 2016-11-27 16:27:5…

比特幣的跨輸入簽名聚合(Cross-Input Signature Aggregation,CISA)

1. 引言 2024 年&#xff0c;人權基金會&#xff08;Human Rights Foundation&#xff0c;簡稱 HRF&#xff09;啟動了一項研究獎學金計劃&#xff0c;旨在探討“跨輸入簽名聚合”&#xff08;Cross-Input Signature Aggregation&#xff0c;簡稱 CISA&#xff09;的潛在影響。…

3.基礎開發工具

1.軟件包管理器 1.1什么是軟件包 ? 在Linux下安裝軟件, ?個通常的辦法是下載到程序的源代碼, 并進?編譯, 得到可執?程序. ? 但是這樣太?煩了, 于是有些?把?些常?的軟件提前編譯好, 做成軟件包(可以理解成windows上 的安裝程序)放在?個服務器上, 通過包管理器可以很…

Golang errors 包快速上手

文章目錄 1.變量2.類型3.函數3.1 New3.2 Is簡介函數簽名核心功能示例代碼使用場景注意事項小結 3.3 As簡介函數簽名核心功能示例代碼使用場景注意事項小結 3.4 Unwrap簡介函數簽名核心功能使用示例使用場景注意事項小結 3.5 Join簡介函數簽名核心功能使用場景注意事項小結 4.小…

Java File 類詳解

Java File 類詳解 File 類是 Java 中用于表示文件和目錄路徑名的抽象類&#xff0c;位于 java.io 包中。它提供了豐富的 API&#xff0c;用于操作文件系統&#xff0c;包括創建、刪除、重命名、查詢文件屬性等功能。 1. File 類核心知識點 &#xff08;1&#xff09;構造方法…

基于javaweb的SpringBoot兒童愛心管理系統設計與實現(源碼+文檔+部署講解)

技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論文…

Unity Nav Mesh導航系統的簡單使用

標題 1.下載。2.面板位置3.object面板4.Area面板5.Bake面板6.Agent面板7.Nav Mesh Agent組件8.Nav Mesh Obstacle組件9.簡單使用 1.下載。 unity2022以上版本要去packageManager中下載。 2.面板位置 3.object面板 Navigation Static&#xff1a;設置該物體是否被列入靜態尋路…

FairyGUI圖標文字合批失敗的原因

1&#xff09;FairyGUI圖標文字合批失敗的原因 2&#xff09;為什么Cubemap的內存占用超高 3&#xff09;如何找到網格某個切面的中心點 4&#xff09;為什么SafeZone在倒屏后方向相反 這是第428篇UWA技術知識分享的推送&#xff0c;精選了UWA社區的熱門話題&#xff0c;涵蓋了…

[BUG]Cursor C++擴展不支持

本文內容組織形式 問題描述失效原因解決方案使用野版C Extension 猜你喜歡結語 問題描述 日期&#xff1a;20250419 操作系統&#xff1a; mac C代碼沒有辦法進行跳轉&#xff0c;并且和以前的文本標亮也不同 并且還有如下問題彈窗 C/C 擴展只能與 Microsoft Visual Studio…

深?理解 JVM 執?引擎

深?理解 JVM 執?引擎 其中前端編譯是在 JVM 虛擬機之外執?&#xff0c;所以與 JVM 虛擬機沒有太?的關系。任何編程語?&#xff0c;只要能夠編譯出 滿? JVM 規范的 Class ?件&#xff0c;就可以提交到 JVM 虛擬機執?。?于編譯的過程&#xff0c;如果你不是想要專?去研…

Ubuntu 部署 DeepSeek

在 Ubuntu 系統上部署 DeepSeek 模型&#xff0c;能讓用戶利用其強大的人工智能能力&#xff0c;同時保障數據的安全性與操作的自主性。不過&#xff0c;這一過程涉及諸多技術細節&#xff0c;需要謹慎操作。以下將為你詳細介紹在 Ubuntu 系統部署 DeepSeek 的操作步驟及注意事…

通義靈碼 Rules 庫合集來了,覆蓋Java、TypeScript、Python、Go、JavaScript 等

通義靈碼新上的外掛 Project Rules 獲得了開發者的一致好評&#xff1a;最小成本適配我的開發風格、相當把團隊經驗沉淀下來&#xff0c;是個很好功能…… 那么有哪些現成的 Rules 可以抄作業呢&#xff0c;今天我們官方輸出了 Java、TypeScript、Python、Go、JavaScript 等語…