Redis 第三講 --- 指令篇 通用命令(一)

前言:

在《Redis 第二講》中,我們完成了 Redis 的安裝與環境配置,為實際操作奠定了基礎。本講將正式進入 Redis 的核心領域——指令操作。我們將從最基礎的鍵值操作開始,逐步掌握數據讀寫、鍵管理及生產環境注意事項,為后續深入學習打下堅實根基。


一、學會使用文檔

這是我們學習Redis的第一步,我們想作為一個合格的程序員必須要學會閱讀文檔。

通過redis-cli客戶端和 redis 服務器交互.
redis 的命令非常非常多!!
任何一個工具軟件,去找相關資料,一定是官方網站!!!
1. 掌握常用命令(多操作多練習)
2. 學會使用redis 的文檔
雖然redis這種知名軟件,都是有中文文檔的.
但是還是建議大家看英文的,
(英語這一關,必須要過,也一定能過!!》
后面工作中可能會用到一些不太知名的軟件/庫,很可能沒有中文文檔.但是一定有英文官方文檔。

對于如何閱讀文檔,主要是閱讀官方網站,這里就不再重復了。

  • 官方文檔(詳細命令、配置指南)→?Docs

  • 下載 Redis(源碼、穩定版、開發版)→?Downloads - Redis

  • Redis 博客(最新動態、技術文章)→?Redis Blog - Read about what’s happening at Redis

  • Redis 命令參考?→?Commands | Docs


下面我們就介紹一下,我們在Redis當中會遇到的幾個高頻全局命令,有的小伙伴可能會問,什么是全局命令呢?

我們下面來解釋一下,首先我們知道Redis是一個鍵值對的數據庫,簡單來說就是“key-value”,但是在Redis這里不想我們之前在語言階段學習的鍵值對,Redis的vaule是各種數據結構,而不是數據類型,所以Redis為了方便操作相關的數據結構,就提出了針對響應結構的指令,但是也有一些指令是不必關心數據庫的value是啥結構也可以發揮作用的,這些指令就被稱為全局指令。

二、get/set

我們介紹一下,Redis最核心的兩條指令,get/set。
我們已經知道redis是按照鍵值對的方式存儲數據的,而get 根據 key 來取 value,set 把 key 和 value 存儲進去
使用簡單,學習成本很低

但是使用也是有注意的點的,我們前面說的value是有數據結構的區分的,實際上key也是有的,并且就是字符串類型,我們使用key設置鍵值對關系的時候,無論寫的是啥,都會被Redis當成字符串來進行存儲。

2.1 set

下面我們來演示一下:

????????

我們發現Redis對于每一次的語句的執行結果是有反映的,這里我們就成功設置了一對鍵值對。

2.2 get?

?功能就如它的名字一樣,通過輸入key值得到value值。

注:

1、對于上述這里的key-value,不需要加上引號,就是表示字符串的類型當然,如果要是給key和value加上引號,也是可以的(單引號或者雙引號都行)
2、redis中的命令不區分大小寫.

但是在上面get最后一個查詢當中我們看到一個新奇的單詞 ”nil“,這又是啥意思呢?這就是我們下面的問題了。

2.3 null 與nil

關于這個單詞在官方文檔當中是這樣寫的。

nil?和?null?都表示?“無值”或“空值”?的概念,但它們的命名和使用場景因編程語言而異。

在Redis當中開發者選擇使用nil表示空值,而在其他語言當中比如C/C++當中就是使用NULL表示空值,大家關于這個概念有個了解就好。


三、keys,exists

Redis 有 5 種數據結構,但它們都是鍵值對種的值,對于鍵來說有?些通?的命令。

3.1 KEYS

返回所有滿?樣式(pattern)的 key。那樣式又是什么呢?

pattern樣式包含特殊符號的字符串,有的地方翻譯成"樣式"或者"模式”。

存在的意義,是去描述特定的字符串長啥樣的

?持如下統配樣式。

? h?llo 匹配 hello , hallo 和 hxllo

? h*llo 匹配 hllo 和 heeeello

? h[ae]llo 匹配 hello 和 hallo 但不匹配 hillo

? h[^e]llo 匹配 hallo , hbllo , ... 但不匹配 hello

? h[a-b]llo 匹配 hallo 和 hbllo

當然我們也不口頭說,我們下面實機演示一遍。

keys,支持的樣式主要是有如下的幾種:【?,*,[],^ ,-】

  1. ?:匹配任意一個字符
  2. []:[字符串]只能匹配到方括號內的字符串,別的不行.相當于給出固定的選項了,
  3. ^:排除某個特定的字符,只有該字符匹配不了.其他的都能匹配
  4. -:匹配某個范圍內的字符.包含兩側邊界

實際演示:

?現在我們的Redis上有這些鍵值,我們可以開始演示了。

1)?:匹配一個字符

2)*:匹配0個或者多個任意字符

3)[]:[字符串]只能匹配到方括號內的字符串,別的不行.相當于給出固定的選項了,

4)^:排除某個特定的字符,只有該字符匹配不了.其他的都能匹配

5)-:匹配某個范圍內的字符.包含兩側邊界

注意:我們在使用這個指令查詢相關的key的時候,本質上是對key值進行一次遍歷,所以我們的時間復雜度就是O(N),談到這個我們就得談到另外的一個問題了,那就是我們的keys *。

3.2 KEYS *

keys 命令的時間復雜度是O(N),所以,在生產環境上,一般都會禁止使用keys命令.尤其是大殺器keys*,為什么呢?還記得我們前面在談到為啥Redis要更快一些嗎?其中有一條原因是因為它是單線程,但是在keys *的情況下,一臺的Redis服務器就得全力完成該條指令,查詢 redis 中所有的 key !!那就沒辦法對用戶的請求做出反映,沒關系,負責用戶服務的服務器發現沒有響應,就會直接找mysql服務器發出請求,這樣的后果可能是災難性的,我們知道Redis服務器上一般存放的是我們服務的熱點數據,那么基本上Redis服務器被阻塞了,那就是所有的用戶請求就打到了MySQL服務器上,這很容易就讓MySQL服務器掛掉,進而導致整個服務的掛掉。

3.3 exists

判斷某個 key 是否存在。

語法:

1 EXISTS key [key ...]

時間復雜度:O(1)

返回值:key 存在的個數。?

當我們查詢的key不存在的時候,就是直接返回0.

那我們下面再來看一種使用exists的方法。

大家說,這以紅線劃分的兩種寫法有什么不同嗎?

要想討論這個問題,我們應該先對網絡的兩個概念有所了解。

封裝和分用
進行網絡通信的時候,發送方發送一個數據,這個數據就要從應用層,到物理層,層層封裝,
(每一層協議都要加上報頭或者尾)=>發一個快遞,要包裝一下,要包裝好幾層
接收方收到一個數據,這個數據就要從物理層,到應用層層層分用
((把每一層協議中的報頭或者尾給拆掉)=>收到一個快遞,要拆快遞,要拆很多層
而網卡 是 IO 設備,更何況,你的客戶端和服務器不一定在一個主機上,中間可能隔著很遠。

這就導致了其實每一次的網絡IO的消耗是很大的,所有分開的寫法,會產生更多輪次的網絡通信,效率比較低,成本比較高。
redis自身也非常清楚上述問題.redis的很多命令都是支持一次就能操作多個key的操作?


四、生產環境

1.辦公環境(入職公司之后,公司給你發個電腦)
筆記本(windows, mac)/臺式機,現在辦公電腦,一般8C16G512G
?

2.開發環境

有的時候,開發環境和辦公環境是一個
有的時候,開發環境是單獨的服務器,配置為28C128G4T,這兩種情況主要是看崗位和公司規模
做前端/做客戶端,一般來說,開發環境就是辦公環境了,后端來說,很可能是單獨的服務器。
主要是有的后端程序,會比較復雜
1. 編譯一次時間特別久(C++) =>C++ 23 才會引入module
要使用高性能的服務器,進行編譯
2. 有的程序一啟動要消耗很多的cpu和內存資源.
辦公電腦難以支撐
3.有的程序比較依賴linux,在windows環境搭不起來

3. 測試環境(測試工程師使用的)? ?

配置比較好的就是28C128G4T

4.線上環境/生產環境
(辦公環境,開發環境,測試環境,也統稱為線下環境,外界用戶無法
訪問到的)
線上環境則是外界用戶能夠訪問到的,
一旦生產環境上出問題,一定會對于用戶的使用產生影響!!直接的影響到公司營收!
很多公司的營收都是靠廣告,廣告一般是按照展示/點擊次數來計費的~~
未來我們去操作線上環境的任何一個設備/程序都要懷著12分的謹慎!!

哪有的小伙伴說我以后不操作生產環境了行不行?

不行!!把一個程序“上線”才算是把活干完了。
上線也可以認為是正式程序猿的一個重要考核指標,也是衡量一個實習生能不能轉正留用的重要標準。
想要看自己是否可能留用,就看上線次數,一兩個月才上線一次,基本涼涼;如果一周能上線兩三次,基本穩。


總結:

本講初步探索了 Redis 的核心操作指令,包括鍵值讀寫(get/set)、鍵管理(keys/exists)等基礎命令,并強調了生產環境的操作規范。通過實踐這些指令,我們已邁出 Redis 實戰的第一步。在下一講《通用命令(二)》中,我們將深入?delexpiretype?等進階指令,進一步解鎖 Redis 的高效數據管理能力。請持續關注!

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

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

相關文章

數字媒體專業課程介紹以及就業方向

專業課程體系融合藝術創作與技術實踐,旨在培養兼具美學素養和產業應用能力的復合型人才。以下是核心課程模塊及代表性課程,涵蓋從基礎到高階的全流程訓練: ?? 一、核心課程體系 藝術基礎課程 繪畫訓練:素描、速寫、色彩理論、構成藝術,培養造型能力與色彩運用2610。 動…

Spring-創建第一個SpringBoot項目

目錄 一.使用IDEA創建 1.專業版 2.社區版 二.使用網頁創建項目 三.項目目錄介紹 一.使用IDEA創建 1.專業版 修改Server URL為https://start.aliyun.com 2.社區版 這里需要注意對應的IDEA版本,版本不對導入無法使用。 不需要解壓&#xff0…

【數據分析三:Data Storage】數據存儲

數據真是越來越多啊 正文開始 一、數據 結構化數據 可以使用關系型數據庫表示和存儲的數據,擁有固定結構 半結構化數據 弱結構化,雖然不符合關系型數據模型的要求,但是含有相關的標記(自描述結構),分割實體及其屬性 。如&#xf…

Spring Boot 整合 Spring AI 與 MCP 開發智能體工具指南

Spring Boot 整合 Spring AI 與 MCP 開發智能體工具指南 一、引言 隨著大語言模型(LLM)的普及,越來越多的開發者希望將其集成到自己的應用中。Spring AI 作為 Spring 生態下的 AI 集成框架,提供了便捷的方式來對接各種大模型。而 MCP(Model Context Pr…

【開源項目】GraphRAG Agent:可解釋、可推理的下一代智能問答系統

GraphRAG Agent:可解釋、可推理的下一代智能問答系統 ??引言?? 傳統 RAG(檢索增強生成)系統常因“黑盒推理”和上下文斷裂被詬病。微軟開源的 GraphRAG 框架嘗試用知識圖譜解決這一問題,而??Graph RAG Agent??&#xff0…

【論文筆記】【強化微調】AgentThink:思維鏈推理 + 工具調用

AgentThink: A Unified Framework for Tool-Augmented Chain-of-Thought Reasoning in Vision-Language Models for Autonomous Driving 1. 引述 這是一篇自動駕駛領域的論文。我對這篇論文主要感興趣的點在于其對于工具調用(Tool Call)的設計。這一點同…

前端頁面Javascript進階DOM與BOM

一、DOM基礎概念 DOM 是文檔對象模型,提供編程接口用于操作 HTML 和 XML 文檔。它將文檔表示為節點樹,每個節點代表文檔的一部分,如元素、文本、屬性等。通過 DOM,開發者可以訪問和修改文檔的結構、樣式與內容。 文檔節點類型 …

AWS CloudFormation深度解析:構建現代云原生應用基礎設施

在現代云原生應用開發中,基礎設施即代碼(Infrastructure as Code, IaC)已成為標準實踐。本文將深入解析一個完整的AWS CloudFormation模板,該模板為GlowChat Connector應用構建了生產級的基礎設施。 模板概述 這個CloudFormation模板是一個兩部分部署架構中的第一部分,專…

Oracle 查看所有表的字段名、數據類型及長度

1.只查看某個特定表的字段名 SELECT column_name, data_type, data_length FROM user_tab_columns WHERE table_name 你的表名 -- 注意大寫 ORDER BY column_id;2.查看當前用戶下所有表的字段名 SELECT table_name, column_name, data_type, data_length FROM user_tab_colu…

創客匠人分享知識付費監管升級下的行業價值重構:從合規挑戰到發展機遇的實踐路徑

引言:監管政策背后的行業邏輯轉向 知識付費領域的監管體系升級,本質上是對行業發展路徑的重新校準。隨著 "內容產品需具備知識沉淀載體" 等新規落地,行業正在經歷從 "流量驅動型增長" 到 "價值驅動型發展" 的…

邊緣計算的認識和應用

邊緣計算 邊緣計算是一種分布式計算范式,它將計算能力和數據存儲放置在離數據源更近的位置,而不是依賴于集中式的數據中心。通過在“邊緣”進行數據處理,邊緣計算可以減少延遲、提高響應速度、節省帶寬,并增強數據隱私和安全性。…

Arduino R4 WIFI橫向滾動顯示16×16LED屏

實現一個從左向右橫向滾動的"吉祥如意"顯示效果。 arduino r4 WiFi滾動顯示16*16led #include <SPI.h>// 引腳定義 const int RowA 2, RowB 3, RowC 4, RowD 5; const int OE 6; const int LATCH 10;// 字模數據 (吉祥如意) const PROGMEM byte characte…

html css js網頁制作成品——HTML+CSS+js力學光學天文網頁設計(4頁)附源碼

目錄 一、&#x1f468;?&#x1f393;網站題目 二、??網站描述 三、&#x1f4da;網站介紹 四、&#x1f310;網站效果 五、&#x1fa93; 代碼實現 &#x1f9f1;HTML 六、&#x1f947; 如何讓學習不再盲目 七、&#x1f381;更多干貨 一、&#x1f468;?&#x1f…

嵌入式開發之freeRTOS移植

FreeRTOS 是一款廣泛應用于嵌入式系統的開源實時操作系統&#xff08;RTOS&#xff09;&#xff0c;其移植過程需要結合具體硬件平臺和編譯器進行適配。以下是 FreeRTOS 移植的詳細步驟和關鍵注意事項&#xff1a; 一、移植前的準備工作 1. 硬件平臺確認 處理器架構&#xf…

【算法 day07】LeetCode 344.反轉字符串 | 541. 反轉字符串II | 卡碼網:54.替換數字

344.反轉字符串 題目鏈接 | 文檔講解 |視頻講解 : 鏈接 1.思路&#xff1a; 采用雙指針&#xff0c;left從0開始移動,right從尾元素進行移動 循環判斷條件&#xff1a;left< right,邊界值使用舉例法&#xff0c;eg: [ h ,e ,l,o ]偶數個不會相遇, [h ,e ,l ,l ,o ]奇數個&…

從檢索到生成:RAG 如何重構大模型的知識邊界?

引言&#xff1a;知識邊界的突破與重構 在人工智能技術快速發展的今天&#xff0c;大型語言模型&#xff08;LLMs&#xff09;已經展現出強大的文本生成和理解能力。然而&#xff0c;這些模型在實際應用中仍面臨著知識時效性、事實準確性和可溯源性等核心挑戰。檢索增強生成&a…

前端基礎知識CSS系列 - 05(BFC的理解)

一、是什么 我們在頁面布局的時候&#xff0c;經常出現以下情況&#xff1a; 這個元素高度怎么沒了&#xff1f;這兩欄布局怎么沒法自適應&#xff1f;這兩個元素的間距怎么有點奇怪的樣子&#xff1f;...... 原因是元素之間相互的影響&#xff0c;導致了意料之外的情況&…

Prompt Engineering 學習指南:從入門到精通的最佳路徑與資源

本 Prompt Engineering 技術報告,旨在提供一個從入門到精通的清晰學習路徑、核心方案,并附上最關鍵的 GitHub 倉庫資源。您可以將此報告作為快速提升 Prompt 能力的“速查手冊”和“成長地圖”。 Prompt Engineering 學習指南:從入門到精通的最佳路徑與資源 技術報告摘要 (…

fastmcp MCPConfig多服務器使用案例;sse、stdio、streamable-http使用

1、sse、stdio、streamable-http使用 參考&#xff1a;https://gofastmcp.com/deployment/running-server#the-run-method stdio本地使用&#xff1b;sse、streamable-http遠程調用&#xff08; Streamable HTTP—New in version: 2.3.0&#xff09; 調用&#xff1a; stdio、…

網站服務器被DDOS攻擊打不開,是要換高防服務器還是加CDN能防護住?

高防云服務器、高防 IP 和高防 CDN 作為常見應對網絡攻擊的重要利器&#xff0c;它們各自有著獨特的特點和應用場景&#xff0c;從技術架構看&#xff0c;高防云服務器是資源型防護&#xff0c;深度整合計算與防御資源&#xff1b;高防IP是流量型防護&#xff0c;以代理模式實現…