Redis 常用數據類型和命令使用

目錄

1 string ? ?

2 hash

3 list

4 set集合

5 zset有序集合


1 string ? ?


值可以是字符串、數字和二進制的value,值最大不能超過512MB

應用場景:
應用程序緩存
計數器
web共享session
限速


1.1 設置單個鍵值
set <key> value [EX seconds|PX milliseconds] [nx|xx]
ex seconds 為鍵值設置秒級過期時間
px milliseconds 為鍵值設置毫秒級過期時間
nx 鍵必須補存在,才可以設置成功,用于添加
xx 與nx相反,鍵必須存在,才可以設置成功,用于更新

示例:
設置key1值為value1,過期時間60秒,鍵存在才更新
127.0.0.1:6379>set key1 value1 ex 60 ?xx?


1.2 獲取值
get key

示例:
127.0.0.1:6379> get key1
"value1"


1.3 計數
incr key,
值為整數返回自增后的結果
值不是整數返回錯誤
鍵不存在按照值為0自增返回結果1
其他命令:decr(自減),incrby(自增指定數字),decrby(自減指定數字)

示例:
127.0.0.1:6379> set counter 1
OK
127.0.0.1:6379> get counter
"1"

127.0.0.1:6379> incr counter
(integer) 2
127.0.0.1:6379> get counter
"2"

127.0.0.1:6379> decr counter
(integer) 1
127.0.0.1:6379> get counter
"1"

127.0.0.1:6379> incrby counter 10
(integer) 11
127.0.0.1:6379> get counter
"11"

127.0.0.1:6379> decrby counter 3
(integer) 8
127.0.0.1:6379> get counter
"8"

1.4 追加值
append <key> value ? ?#追加到原值的末尾

實例:
127.0.0.1:6379> get key2
"value2"
127.0.0.1:6379> append key2 "-key2"
(integer) 11
127.0.0.1:6379> get key2
"value2-key2"


1.5字符串長度
strlen <key> #獲取值的長度

實例:
127.0.0.1:6379> strlen key2
(integer) 11

1.6 獲取部分字符串
getrange <key> start end

實例:
127.0.0.1:6379> getrange key2 1 2
"al"

1.7 刪除key
del <key>

實例:
127.0.0.1:6379> del key1
(integer) 1

1.8 批量設置值
mset <key> value [key value ...]

實例:
127.0.0.1:6379> mset a 1 b 2 c 3 d 4 e 5
OK

1.9 批量獲取
mget <kye> [key ...]

實例:
127.0.0.1:6379> mget a b c d e
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"

2 hash


是一個鍵值對集合

應用場景:
緩存對象,一個key里有多個字段,比如緩存用戶登錄信息。

2.1 設置值
hset <key> field value ? ? #單個值
hmget <key> field [field ...]

實例:
127.0.0.1:6379> hset myhash name zyb
(integer) 1
127.0.0.1:6379> hmset myhash age 10 address gz
OK

2.2 查詢
hget <key> field ? ? ? #獲取單個field的值
hmget <key> field [field ..] ?#獲取多個field的值

實例:
127.0.0.1:6379> hget myhash name
"zyb"
127.0.0.1:6379> hmget myhash age address
1) "10"
2) "gz"


hkeys <key> ? #獲取所有field

實例:
127.0.0.1:6379> hkeys myhash
1) "name"
2) "age"
3) "address"


hvals <key> ? #獲取所有value

實例:
127.0.0.1:6379> hvals myhash
1) "zyb"
2) "10"
3) "gz"

hgetall <key> ?#獲取所有的field-value

實例:
127.0.0.1:6379> hgetall myhash
1) "name"
2) "zyb"
3) "age"
4) "10"
5) "address"
6) "gz"


hlen <key> #計算field個數

實例:
127.0.0.1:6379> hlen myhash
(integer) 3


hexists <key> field ?#判斷field是否存在

實例:
127.0.0.1:6379> hexists myhash name
(integer) 1 ?
返回1表示該field存在

hstrlen <key> field ? #計算value的字符串長度

實例:
127.0.0.1:6379> hstrlen myhash name
(integer) 3


2.3 刪除field
hdel <key> field [field ...]

實例:
127.0.0.1:6379> hdel myhash address
(integer) 1
127.0.0.1:6379> hgetall myhash
1) "name"
2) "zyb"
3) "age"
4) "10"


3 list


列表類型是用來存儲多個有序字符串

應用場景:
消息隊列: lpush+rpop=消息隊列,生產和消費
文章列表
棧: lpush+lpop=stack
lpush+ltrim =Capped collection 有限集合

3.1 添加
#從左/右邊插入元素
lpush <key> value [value ...]

實例:
127.0.0.1:6379> lpush mylist a b c d e f?
(integer) 6

#向某個元素前或后插入元素
linesert <key> before|after pivot value

示例: 在a元素之后插入aaa
127.0.0.1:6379> LINSERT mylist before a aaa
(integer) 7

#rpoplpush 移除列表key1的最后一個元素,并將該元素添加到另一個列表key2的左邊并返回
rpoplpush <key1> <key2>


3.2 刪除
#從列表左/右側彈出元素
rpop/lpop key count

實例:
127.0.0.1:6379> lpop mylist
"f"

#刪除指定元素
lrem key count value
count>0 從左到右刪除最多count個元素
count<0 從右到左刪除最多count絕對值個元素
count=0 刪除所有

示例:
127.0.0.1:6379> lrem mylist 2 a
(integer) 2


#按照索引范圍修剪列表
ltrim key start end ? ? ?#只保留列表listkey第start個到end個元素

示例:
127.0.0.1:6379> LTRIM mylist 2 5
OK

3.3 查詢
#獲取指定范圍內的元素列表
lrange key start end?

示例:
127.0.0.1:6379> LRANGE mylist 0 -1 ? ?#所有元素
1) "c"
2) "b"
3) "aaa"
4) "a"

#獲取列表指定索引下標的元素
lindex key index

示例:
127.0.0.1:6379> LINDEX mylist 2
"aaa"

#獲取列表長度
llen key

示例:
127.0.0.1:6379> LLEN mylist
(integer) 4

#修改指定索引下標的元素
lset key index newValue

示例:
127.0.0.1:6379> LSET mylist 2 python ? #索引從0開始計算
OK
127.0.0.1:6379> LRANGE mylist 0 -1
1) "c"
2) "b"
3) "python"
4) "a"

4 set集合

應用場景:
標簽,給用戶添加標簽
獨立ip
點贊
共同好友,利用set的交集

4.1 添加元素,返回結果為添加成功的元素個數
sadd key member [member ...]

示例:
127.0.0.1:6379> sadd myset a b c d
(integer) 4


4.2 刪除元素,返回結果為成功刪除元素個數
srem key memeber [member ...]

示例:
127.0.0.1:6379> SREM myset a
(integer) 1

4.3 計算元素個數
scard key

示例:
127.0.0.1:6379> SCARD myset
(integer) 3


4.4 判斷元素是否在集合中
sismember key member

示例:
127.0.0.1:6379> SISMEMBER myset a
(integer) 0 ?#不存在
127.0.0.1:6379> SISMEMBER myset b
(integer) 1 ?#存在


4.5 隨機從集合返回指定個數元素,不會刪除
srandmember key [count]

4.6 隨機從集合彈出元素刪除
spop key [count]

4.7 獲取所有元素
smembers key


4.8 求多個集合的交集
sinter key [key ...]

4.9 求多個集合的并集
suinon key [key ...]

4.10 求多個集合差集
sdiff key [key ...]

4.11 將交集、并集、差集的結果保存
sinterstore destination key [key ...]?
suionstore destination key [key ...]?
sdiffstore destination key [key ...]?


4.12 將集合中一個member移到另一個集合
SMOVE source destination member

實例:
127.0.0.1:6379> SMOVE myset myset2 b
(integer) 1
127.0.0.1:6379> SMEMBERS myset2
1) "b"


5 zset有序集合


應用場景:
排行榜
社交網絡
隊列

5.1 添加成員
zadd key score member [score member ...]
zincrby key increment member ? ?#增加成員分數

示例:
127.0.0.1:6379> ZADD myzadd 1 a 2 b 3 c 4 d 5 e 6 f
(integer) 6

5.2 計算成員個數
zcard key

5.3 計算某個成員的分數
zscore key member

5.4 計算成員的排名
zrank key member ?#分數從低到高返回排名
zrevrange key member #分數從高到低返回排名

5.5 返回指定排名范圍成員
zrange key start end ?#從低到高
zrevrage key start end #從高到低

5.6 返回指定分數范圍的成員
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] ? ? #從低到高
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] ?#從高到低

5.7 返回指定分數范圍成員個數
zcount key min max

5.8 刪除成員
zrem key member [member ...]

5.9 刪除指定排名內的升序元素
ZREMRANGEBYRANK key start stop

5.10刪除指定分數范圍的成員
ZREMRANGEBYSCORE key min max

5.11 交集
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]

5.12 并集
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]

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

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

相關文章

Spring Boot緩存組件Ehcache、Caffeine、Redis、Hazelcast

一、Spring Boot緩存架構核心 Spring Boot通過spring-boot-starter-cache提供統一的緩存抽象層&#xff1a; #mermaid-svg-PW9nciqD2RyVrZcZ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-PW9nciqD2RyVrZcZ .erro…

【photoshop】專色濃度和專色密度

1.1 專色濃度 是圖層填充到專色前&#xff0c;設置的前景色CMYK的K值。填充到專色后&#xff0c;可以查看到專色中圖層的k值。 ps前景色填充快捷鍵 1.Windows 系統&#xff1a;Alt Delete&#xff1b;2.Mac 系統&#xff1a;Option Delete。 1.2專色密度 專色的屬性&…

用電腦控制keysight示波器

KEYSIGHT示波器HD304MSO性能 亮點&#xff1a; 體驗 200 MHz 至 1 GHz 的帶寬和 4 個模擬通道。與 12 位 ADC 相比&#xff0c;使用 14 位模數轉換器 &#xff08;ADC&#xff09; 將垂直分辨率提高四倍。使用 10.1 英寸電容式觸摸屏輕松查看和分析您的信號。捕獲 50 μVRMS …

leetcode hot100刷題日記——33.二叉樹的層序遍歷

解題總結二維vector的初始化方法 題目描述情況1&#xff1a;不確定行數和列數情況2&#xff1a;已知行數和列數情況3&#xff1a;已知行數但不知道列數情況4&#xff1a;已知列數但不知道行數 題目描述 解答&#xff1a;用隊列 思路都差不多&#xff0c;我覺得對于我自己來說&a…

微服務面試資料1

在當今快速發展的技術領域&#xff0c;微服務架構已經成為構建復雜系統的重要方式之一。本文將圍繞微服務的核心概念、技術棧、分布式事務處理、微服務拆分與設計&#xff0c;以及敏捷開發實踐等關鍵問題展開深入探討&#xff0c;旨在為準備面試的 Java 開發者提供一份全面的復…

【設計模式-4.8】行為型——中介者模式

說明&#xff1a;本文介紹行為型設計模式之一的中介者模式 定義 中介者模式&#xff08;Mediator Pattern&#xff09;又叫作調節者模式或調停者模式。用一個中介對象封裝一系列對象交互&#xff0c;中介者使各對象不需要顯式地互相作用&#xff0c;從而使其耦合松散&#xf…

Oracle 的 SEC_CASE_SENSITIVE_LOGON 參數

Oracle 的SEC_CASE_SENSITIVE_LOGON 參數 關鍵版本信息 SEC_CASE_SENSITIVE_LOGON 參數在以下版本中被棄用&#xff1a; Oracle 12c Release 1 (12.1)&#xff1a; 該參數首次被標記為"過時"(obsolete)但依然保持功能有效 Oracle 18c/19c 及更高版本&#xff1a; …

《圖解技術體系》How Redis Architecture Evolves?

Redis架構的演進經歷了多個關鍵階段&#xff0c;從最初的內存數據庫發展為支持分布式、多模型和持久化的高性能系統。以下為具體演進路徑&#xff1a; 單線程模型與基礎數據結構 Redis最初采用單線程架構&#xff0c;利用高效的I/O多路復用&#xff08;如epoll&#xff09;處…

【電賽培訓課】測量與信號類賽題分析

一、賽題基本情況及硬件電路準備 &#xff08;一&#xff09;賽題基本情況 1.測量與信號類賽題統計 2.測量與信號類賽題特點 &#xff08;二&#xff09;硬件電路準備 綜測環節不允許帶入電腦和手機&#xff0c;需要自己根據題目要求和芯片參數指標進行設計和計算&#xff0c…

移動AI神器GPT Mobile:多模型自由切換

GPT Mobile是什么 GPT Mobile是一款開源的本地移動部署AI工具,主要用于安卓設備。以下是其相關介紹: 功能特點 多模型交互:支持與多個大型語言模型(LLM)同時進行對話,用戶導入相應的API密鑰,就可連接OpenAI、Anthropic、Google、Ollama等平臺,還能根據需求自由切換不同…

AirSim/Cosys-AirSim 游戲開發(二)使用自定義場景

在實際的開發過程中很少會只用 AirSim 自帶的 Blocks 場景&#xff0c;通常需要用到自定義的一些環境和模型&#xff0c;依托于強大的 UE 引擎可以較為逼真地完成場景渲染。這篇博客記錄了如何從頭開始導入一個自定義場景并加載 AirSim 插件。 【Note】&#xff1a;由于 UE Ed…

GPU 圖形計算綜述 (三):可編程管線 (Programmable Pipeline)

2000年左右&#xff0c;微軟在DirectX 8.0中首次提出了Shader Model 1.0和頂點著色器&#xff08;Vertex Shader&#xff09;的概念&#xff0c;標志著可編程管線時代的來臨。隨后&#xff0c;在DirectX 9.0中推出了Shader Model 2.0和像素著色器&#xff08;Pixel Shader&…

【Go語言基礎【3】】變量、常量、值類型與引用類型

文章目錄 一、值&#xff08;Value&#xff09;與字面量&#xff08;Literal&#xff09;1. 值2. 字面量 二、變量&#xff08;Variable&#xff09;1. 聲明方式2. 賦值方式3. 變量默認值4. 類型與值的匹配 三、常量&#xff08;Constant&#xff09;1. 聲明方式2. 常量的特性3…

AWS 亞馬遜 S3存儲桶直傳 前端demo 復制即可使用

自己踩過坑不想別人也踩坑了 亞馬遜S3存儲桶直傳前端demo復制即可使用 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0…

Python數據可視化科技圖表繪制系列教程(四)

目錄 帶基線的棒棒糖圖1 帶基線的棒棒糖圖2 帶標記的棒棒糖圖 啞鈴圖1 啞鈴圖2 包點圖1 包點圖2 雷達圖1 雷達圖2 交互式雷達圖 【聲明】&#xff1a;未經版權人書面許可&#xff0c;任何單位或個人不得以任何形式復制、發行、出租、改編、匯編、傳播、展示或利用本博…

如何有效刪除 iPhone 上的所有內容?

“在出售我的 iPhone 之前&#xff0c;我該如何清除它&#xff1f;我擔心如果我賣掉它&#xff0c;有人可能會從我的 iPhone 中恢復我的信息。” 升級到新 iPhone 后&#xff0c;你如何處理舊 iPhone&#xff1f;你打算出售、以舊換新還是捐贈&#xff1f;無論你選擇哪一款&am…

[yolov11改進系列]基于yolov11使用SwinTransformer替換backbone用于提高多尺度特征提取能力的python源碼+訓練源碼

【SwinTransformer介紹】 摘要 ViT的缺點&#xff1a; Transformer在語言處理中的基本元素是word token&#xff0c;其特點是語義信息比較密集。而ViT中token的尺度&#xff08;scale&#xff09;是固定的&#xff0c;且視覺token攜帶的語義信息比語言文字序列差&#xff0c…

NoSQL 之 Redis 配置與優化

目錄 一、Redis 介紹 1、關系型數據庫與非關系型數據庫 &#xff08;1&#xff09;關系型數據庫 &#xff08;2&#xff09;非關系型數據庫 &#xff08;3&#xff09;非關系型數據庫產生背景 2、Redis 基礎 &#xff08;1&#xff09;Redis 簡介 &#xff08;2&#x…

算法復雜度,咕咕咕

1.數據結構與算法 數據結構是計算機存儲&#xff0c;組織數據的方式&#xff0c;指相互之間存在一種或多種特定關系的數據元素的集合。可以理解為形狀不同的容器。 算法是定義好的計算過程&#xff0c;取輸入值&#xff0c;經過一系列計算方法變成輸出值。 &#xff08;推薦…

【Linux】 Linux 進程控制

參考博客&#xff1a;https://blog.csdn.net/sjsjnsjnn/article/details/125581083 一、進程創建 1.1 fork()函數 在linux中fork函數是非常重要的函數&#xff0c;它從已存在進程中創建一個新進程。新進程為子進程&#xff0c;而原進程為父進程。進程調用fork&#xff0c;當…