Redis的數(shù)據(jù)類型解讀
String


以下是基于圖片中 Redis String類型命令 的提取與優(yōu)化整理,結合實用場景和注意事項,便于快速掌握核心用法:
Redis String類型命令詳解與優(yōu)化指南
1. 基礎操作
命令 | 語法示例 | 作用 | 場景說明 |
SET | SET key value | 添加/修改鍵值對 | 緩存、簡單數(shù)據(jù)存儲 |
GET | GET key | 獲取key對應的value | 讀取緩存或配置 |
SETNX | SETNX key value | key不存在時才設置(原子操作) | 分布式鎖、防重復提交 |
set get setnx
- setnx 如果key值不存在 才添加 如果存在 就不添加 這才是 真正的新增操作

- set 后面 跟nx 也可以實現(xiàn)
2. 批量操作
命令 | 語法示例 | 優(yōu)勢 |
MSET | MSET k1 v1 k2 v2 | 減少網(wǎng)絡開銷,批量寫入 |
MGET | MGET k1 k2 | 批量讀取,提升效率 |
mset多量 添加/修改mget多量 獲取
3. 數(shù)字增減
命令 | 語法示例 | 說明 |
INCR | INCR key | 整數(shù)+1(如計數(shù)器) |
INCRBY | INCRBY key 5 | 指定步長(如+5) |
INCRBYFLOAT | INCRBYFLOAT key 0.5 | 浮點數(shù)增減(如庫存調整) |
incr (auto-increment)
incrby值改成 負的 就 是自減了incrbyfloat浮點數(shù)增減
4. 有效期控制
命令 | 語法示例 | 用途 |
SETEX | SETEX key 60 "value" | 設置鍵值對并指定有效期(秒) |
PSETEX | PSETEX key 10000 "value" | 毫秒級有效期(精準控制) |
setex (ex =expire)
添加一個Key 并且 設置有效期

同樣在后面加 ex 可以實現(xiàn)
psetex
命令對比速查表
需求 | 應選命令 | 替代方案 |
設置值并過期 | SETEX | SET +EXPIRE |
防覆蓋寫入 | SETNX | SET +NX 參數(shù) |
浮點數(shù)計算 | INCRBYFLOAT | 客戶端計算后SET |

Key的層級模式


在這里面就形成了層級結構


Hash類型


Redis Hash類型常見命令速查表
命令格式 | 功能描述 | 示例用法 |
HSET key field value | 設置/修改Hash鍵中指定字段的值 | HSET user:100 name "張三" |
HGET key field | 獲取Hash鍵中指定字段的值 | HGET user:100 name → "張三" |
HMSET key field1 value1 [field2 value2...] | 批量設置多個字段值(Redis 4.0+建議改用HSET) | HMSET product:500 price 2999 stock 100 |
HMGET key field1 [field2...] | 批量獲取多個字段的值 | HMGET user:100 name age |
HGETALL key | 獲取Hash鍵中所有字段和值(返回交替顯示的字段/值列表) | HGETALL user:100 |
HKEYS key | 獲取Hash鍵中所有字段名 | HKEYS product:500 → ["price", "stock"] |
HVALS key | 獲取Hash鍵中所有字段值 | HVALS product:500 → ["2999", "100"] |
HINCRBY key field increment | 對指定字段值進行整數(shù)遞增/遞減(支持負數(shù)) | HINCRBY product:500 stock -5 |
HSETNX key field value | 僅當字段不存在時設置值(原子操作) | HSETNX user:100 email "a@test.com" |
- Hset


相當于 一個 key 可以存放 多個哈希key 和 哈希value
- Hget

要同時指定 key 和 哈希key 才可以獲得 哈希value
HMset 輸入一個key 和一次性添加多個 哈希key 和 哈希value


HMget 輸入一次key 一次性輸入 多個 哈希key 去獲得 多個 哈希value

HgetAll 輸入一次key 獲得所有 的哈希key 哈希value 依次返回

Hkeys 獲得所有的哈希key

Hvals 獲得所有的哈希value

HincrBy 指定 key 指定哈希key 選擇增加的 數(shù)值

Hsetnx 指定key 和 哈希key 如果哈希key不存在 則添加 value 如果 存在 則添加失敗

Link類型
List接近于 Java中的LinkedList



Lpush 向左推入元素 L是 left

先推入1 后 2 后3 所以順序是 321

Rpush 向右推入元素 R是 right


Lpop 向左取出元素 并且刪除該元素

Rpop 向右取出元素 并且刪除該元素

Lrange 從左到右取出 范圍內的數(shù) 并且不刪除


BLpop 左 延遲等待 刪除

阻塞方式 第三個參數(shù)是時間
如果表內不存在數(shù)據(jù) 就會等100s 去等
打開第二個客戶端去添加數(shù)據(jù) 然后第一個客戶端就會 接收到然后刪除

BRpop 右 延遲等待刪除

阻塞方式 第三個參數(shù)是時間
如果表內不存在數(shù)據(jù) 就會等100s 去等
打開第二個客戶端去添加數(shù)據(jù) 然后第一個客戶端就會 接收到然后刪除


Set類型
List接近于 Java中的LinkedList



Lpush 向左推入元素 L是 left

先推入1 后 2 后3 所以順序是 321

Rpush 向右推入元素 R是 right


Lpop 向左取出元素 并且刪除該元素

Rpop 向右取出元素 并且刪除該元素

Lrange 從左到右取出 范圍內的數(shù) 并且不刪除


BLpop 左 延遲等待 刪除

阻塞方式 第三個參數(shù)是時間
如果表內不存在數(shù)據(jù) 就會等100s 去等
打開第二個客戶端去添加數(shù)據(jù) 然后第一個客戶端就會 接收到然后刪除

BRpop 右 延遲等待刪除

阻塞方式 第三個參數(shù)是時間
如果表內不存在數(shù)據(jù) 就會等100s 去等
打開第二個客戶端去添加數(shù)據(jù) 然后第一個客戶端就會 接收到然后刪除


SortSet類型


Zadd 添加 注意的是 第一個是 key 然后 前面的數(shù)據(jù)是 score 后面的值是 value

它會自動按照score 分數(shù)排名 升序

Zrem (rem remove) key 為 stus 就是把value 為 Tom 的刪除掉

Zrank (rank 排名)

它返回的排名 是從 0 開始的 0 1 2 所以 就是 2

Zrevrank (rev = reverse rank 排名)

倒序排序 從0開始 0 1 2 3 所以是 3

Zcard 獲取所有元素總個數(shù)


Zcount 0 82 范圍查詢個數(shù)


ZincrBy (選擇自增多少分 改成負的就減分了)

Zrange (查出這個范圍的所有數(shù)據(jù)) 起始為0


Zrevrange 通過排序個數(shù) 范圍查詢 (rev = reverse range 范圍) )


ZrangeByscore 通過分數(shù)范圍查詢 value

總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Redis五種數(shù)據(jù)結構在JAVA中如何封裝使用
本篇博文就針對Redis的五種數(shù)據(jù)結構以及如何在JAVA中封裝使用做一個簡單的介紹。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-11-11
Redis中StringRedisTemplate中HashOperations的使用詳解
文章介紹了Spring Boot 2中使用Lettuce框架訪問Redis的基本步驟和常用操作,包括添加依賴、注入`StringRedisTemplate`實例以及進行字符串、哈希、集合、列表和有序集合的基本操作,文章還提供了一個登錄案例,并總結了個人經驗,鼓勵讀者參考和支持2026-03-03

