Redis:安裝與常用命令

🌈 個人主頁:Zfox_
🔥 系列專欄:Redis

🔥 安裝 Redis

  1. 使?apt安裝
apt install redis -y
  1. ?持遠程連接
  • 修改 /etc/redis/redis.conf
    • 修改 bind 127.0.0.1bind 0.0.0.0
    • 修改 protected-mode yesprotected-mode no
  1. 控制Redis啟動
  • 啟動Redis服務
service redis-server start
  • 停?Redis服務
service redis-server stop
  • 重啟Redis服務
service redis-server restart
  • 查看Redis服務狀態
service redis-server status
  • 持久化?件存儲?錄
 /var/lib/redis/

Redis持久化?產的RDB和AOF?件都默認?成于該?錄下。后邊章節我們講到持久化時會觀察這邊持久化的?些現象。

  • ?志?件?錄
/var/log/redis/

/var/log/redis/?錄下會保存Redis運?期間?產的?志?件,默認按照天進?分割,并且會將?定?期的???件使?gzip格式壓縮保存。可以使?任意?本編輯器打開,后邊章節我們會通過?志來觀察?些現象。

🔥 Redis命令?客戶端

🐳 現在我們已經啟動了Redis服務,下?將介紹如何使? redis-cli連接、操作Redis服務。

redis-cli 可以使?兩種?式連接Redis服務器。

  • 第?種是交互式?式:通過redis-cli-h{host}-p{port} 的?式連接到Redis服務,后續所有的操作都是通過交互式的?式實現,不需要再執?redis-cli了,例如:
[root@host ~]# redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set key hello
OK
127.0.0.1:6379> get key
"hello"
  • 第?種是命令?式:? redis-cli-h{host}-p{port}{command}就可以直接得到命令的返回結果,例如:
[root@host ~]# redis-cli -h 127.0.0.1 -p 6379 ping
PONG
[root@host ~]# redis-cli -h 127.0.0.1 -p 6379 set key hello
OK
[root@host ~]# redis-cli -h 127.0.0.1 -p 6379 get key
"hello"

這?有兩點要注意:
1)由于我們連接的Redis服務位于127.0.0.1,端?也使?的是默認的6379端?,所以可以省略-h{host}-p{port}
2)Redis是學習Redis的重要?具,后續的?量章節都是?它來做講解。
有關redis-cli提供的更為強?的功能將在后續章節做詳細介紹。

Redis客?端與服務端的交互過程
在這里插入圖片描述

🔥 Redis 常用命令

本篇開始對于 Redis 的命令進行學習,當然只是學習一些常見的

🦋 get 和 set

🦈 Redis 中是使用鍵值對來進行存儲的,所以 get 是根據 key 來取 Value 的,而 set 是來設置鍵值對的

set? \colorbox{pink}{ set } ?set??

set [key] [value]
127.0.0.1:6379> set key1 value1
OK
127.0.0.1:6379> set key3 value3
OK
127.0.0.1:6379> set 'key2' "value2"
OK

get? \colorbox{pink}{ get } ?get??

get [key]
127.0.0.1:6379> get key1
"value1"
127.0.0.1:6379> get key2
"value2"
127.0.0.1:6379> get key3
"value3"
127.0.0.1:6379> get key100
(nil)

🦋 Redis 全局命令

keys

Redis 可以看成是一個網絡版本的哈希表,它支持很多的數據結構,key 固定是字符串,但是 Value可以是多種多樣的數據結構,下面講述的就是全局命令,可以搭配各種各樣的數據結構

keys [pattern]

該命令可以看到的是每一個 key 的模樣,同時也可以允許存在通配符等

時間復雜度:O(N)

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

先插入幾個鍵值對:

127.0.0.1:6379> set hello 1
OK
127.0.0.1:6379> set hallo 2
OK
127.0.0.1:6379> set hbllo 3
OK
127.0.0.1:6379> set hllo 4
OK
127.0.0.1:6379> set heeeeeeeeeeeeelo 5
OK

?匹配的是任意一個字符

127.0.0.1:6379> keys h?llo
1) "hallo"
2) "hello"
3) "hbllo"
  • 匹配的是0個或者任意字符
127.0.0.1:6379> keys h*llo
1) "hllo"
2) "hallo"
3) "hello"
4) "hbllo"

[abcde]表示匹配這里面的某個選項

127.0.0.1:6379> keys h[abc]llo
1) "hallo"
2) "hbllo"

[^e] 表示排除e,除了e都行

127.0.0.1:6379> keys h[^a]llo
1) "hello"
2) "hbllo"

[a-b] 表示的是a-b范圍內的字符都行

127.0.0.1:6379> keys h[a-b]llo
1) "hallo"
2) "hbllo"

注意事項

keys 命令的時間復雜度是O(N),所以一般會禁止使用keys,尤其是keys *

127.0.0.1:6379> keys *
1) "hllo"
2) "heeeeeeeeeeeeelo"
3) "hallo"
4) "hello"
5) "key1"
6) "key3"
7) "hbllo"
8) "key2"

Redis 是單線程的,所以當執行 keys 的時候可能會導致阻塞,這是一件不可容忍的事,因此一般禁止

Redis 經常會用于做緩存,擋在 mysql 前面,替 mysql 負重前行的人,萬一 Redis 被一個 keys*阻塞住了,此時其他的查詢 Redis 操作就超時了此時這些請求就會直接查數據庫,突然一大波請求過來了, mysql 措手不及,就容易掛了,整個系統就基本癱瘓了

EXISTS

exists key [key ...]
127.0.0.1:6379> keys *
1) "hllo"
2) "heeeeeeeeeeeeelo"
3) "hallo"
4) "hello"
5) "key1"
6) "key3"
7) "hbllo"
8) "key2"127.0.0.1:6379> exists hello hallo
(integer) 2

那為什么要這樣進行一次請求多個呢?這是考慮到了網絡服務,Redis 和 HTTP 的請求響應機制是一樣的,這就意味著如果每次都請求,會消耗一定的網絡資源,但是如果采用一次去檢查多個的情況(減少網絡通信的次數),就不會這樣,相當于會節省一部分的網絡資源

DEL

刪除指定 key

DEL key [key ...]

這個命令相對比較簡單,這里就不再進行贅述了,就是一個刪除的命令

127.0.0.1:6379> keys *
1) "hllo"
2) "heeeeeeeeeeeeelo"
3) "hallo"
4) "hello"
5) "key1"
6) "key3"
7) "hbllo"
8) "key2"127.0.0.1:6379> del hllo hallo
(integer) 2127.0.0.1:6379> keys *
1) "heeeeeeeeeeeeelo"
2) "hello"
3) "key1"
4) "key3"
5) "hbllo"
6) "key2"

這里值得注意的是,Redis 數據被刪除,要看它是否是一個數據庫,如果它作為緩存,那問題不算特別大,但是如果是作為數據庫,那就相當于在 MySQL 中丟失了數據,這就是一個比較嚴重的錯誤了

針對于 Redis 的誤刪數據的錯誤,要根據具體情況具體分析

EXPIRE

expire 的作用是給指定的 key 設置過期時間,key 存活時間超過這個指定的值,就會被自動刪除

expire key seconds

返回值:1表示設置成功。0表示設置失敗

要注意的是,expire 的 key 值,必須得是已經存在的 key 值,如果不是存在的 key 值是不可以被設置過期時間的

127.0.0.1:6379> keys *
1) "heeeeeeeeeeeeelo"
2) "hello"
3) "key1"
4) "key3"
5) "hbllo"
6) "key2"127.0.0.1:6379> expire key2 3
(integer) 1127.0.0.1:6379> keys *
1) "heeeeeeeeeeeeelo"
2) "hello"
3) "key1"
4) "key3"
5) "hbllo"
6) "key2"127.0.0.1:6379> expire key2 3
(integer) 0127.0.0.1:6379> keys *
1) "heeeeeeeeeeeeelo"
2) "hello"
3) "key1"
4) "key3"
5) "hbllo"

TTL

查詢過期時間的命令叫做 ttl,全稱是 time to live

TTL key

返回值:剩余過期時間。-1表?沒有關聯過期時間,-2表?key不存在。

redis> SET mykey "Hello"
"OK"
redis> EXPIRE mykey 10
(integer) 1
redis> TTL mykey
(integer) 10

EXPIRETTL命令都有對應的?持毫秒為單位的版本:PEXPIREPTTL,詳細?法就不再介紹了

鍵的過期機制

在這里插入圖片描述

🦋 Redis 的刪除策略

對于刪除來說,到底該選用哪種策略呢?下面給出兩種策略

  • 先說一下 「惰性刪除」:

假設現在這個 key 已經到達過期時間了,但是暫時還沒刪除它,key 還是存在的,當下一次進行訪問的時候,正好用到了這個 key,此時就會讓 Redis 觸發刪除的操作,并且返回一個 nil

  • 下面說一下「定期刪除」:

定期刪除,就是在一個定期時間內進行檢測,但是定期刪除是要有一定條件的,原因在于 Redis 是一個單線程的程序,如果掃描 key 的時間太多,就會導致被阻塞,形成的效果和 keys * 差不多

TYPE

返回key對應的 value 數據類型。

TYPE key

返回值: none , string , list , set , zset , hash and stream

redis> SET key1 "value"
"OK"
redis> LPUSH key2 "value"
(integer) 1
redis> SADD key3 "value"
(integer) 1
redis> TYPE key1
"string"
redis> TYPE key2
"list"
redis> TYPE key3
"set"

本?結只是拋磚引?,給出?個通?的命令,為5種數據結構的使?做?個熱?,后續章節將對鍵管理做?個更為詳細的介紹。

🔥 共勉

😋 以上就是我對 Redis:安裝與常用命令 的理解, 覺得這篇博客對你有幫助的,可以點贊收藏關注支持一波~ 😉
在這里插入圖片描述

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

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

相關文章

02 APP 自動化-Appium 運行原理詳解

環境搭建見 01 APP 自動化-環境搭建 文章目錄 一、Appium及Appium自動化測試原理二、Appium 自動化配置項三、常見 ADB 命令四、第一個 app 自動化腳本 一、Appium及Appium自動化測試原理 Appium 跨平臺、開源的 app 自動化測試框架,用來測試 app 應用程序&#x…

UDP/TCP協議全解

目錄 一. UDP協議 1.UDP協議概念 2.UDP數據報格式 3.UDP協議差錯控制 二. TCP協議 1.TCP協議概念 2.三次握手與四次揮手 3.TCP報文段格式(重點) 4.流量控制 5.擁塞控制 一. UDP協議 1.UDP協議概念 當應用層的進程1要向進程2傳輸報文&#xff…

AWS之數據分析

目錄 數據分析產品對比 1. Amazon Athena 3. AWS Lake Formation 4. AWS Glue 5. Amazon OpenSearch Service 6. Amazon Kinesis Data Analytics 7. Amazon Redshift 8.Amazon Redshift Spectrum 搜索服務對比 核心功能與定位對比 適用場景 關鍵差異總結 注意事項 …

第13講、Odoo 18 配置文件(odoo.conf)詳細解讀

1. 概述 Odoo 配置文件(odoo.conf)是管理 Odoo 服務器行為的核心工具,涵蓋了網絡、安全、數據庫、性能等多方面的關鍵參數。本文檔系統梳理 Odoo 18 配置文件的主要參數,結合實際應用場景,提供權威的配置建議與最佳實…

Python詳細實現Dash儀表盤:從零構建數據可視化界面

目錄 Python詳細實現Dash儀表盤:從零構建數據可視化界面一、引言:為什么選擇 Dash?二、Dash 的核心組成與工作流程三、項目目標使用數據: 四、數學模型與聚合公式五、儀表盤結構設計頁面設計結構如下: 六、完整代碼實現…

ubuntu磁盤掛載

在 Ubuntu 系統中,掛載額外的磁盤或分區是一項常見操作,無論是為了擴展存儲空間還是組織數據。本文將詳細介紹如何使用mount命令掛載文件系統,并處理可能遇到的問題。 1、掛載文件系統的基本步驟 1.1、 查找磁盤設備名稱 首先需要確定要掛載…

[9-2] USART串口外設 江協科技學習筆記(9個知識點)

1 2 3 智能卡、IrDA和LIN是三種不同的通信技術,它們在電子和汽車領域中有著廣泛的應用: ? 智能卡(Smart Card): ? 是什么:智能卡是一種帶有嵌入式微處理器和存儲器的塑料卡片,可以存儲和處理數…

【js逆向_AES】全國二手房指數數據爬取

目標:請求參數signcode,請求結果data。 網址:aHR0cDovL3d3dy5jY2hpbmRleC5jb20vSG9tZS9pbmRleA 查看載荷 查看響應數據 點擊xhr,發現所有請求參數都是一個signCode,還是加密后的結果,對應結果中數據data也…

模塊化設計,static和extern(面試題常見)

文章目錄 一、函數的聲明和定義1.1 單個文件1.2 多個文件1.3 static和extern1.3.1 static修飾局部變量1.3.2 static修飾全局變量1.3.3 static修飾函數 總結 一、函數的聲明和定義 1.1 單個文件 一般我們在使用函數的時候,直接將函數寫出來就使用了 題目:寫一個函數…

PySide6 GUI 學習筆記——常用類及控件使用方法(地址類QUrl)

文章目錄 地址類QUrl主要功能URL 格式介紹常見 scheme(協議)類型QUrl 類常用方法常用方法示例典型應用場景 地址類QUrl QUrl 是 PySide6.QtCore 模塊中的一個類,用于處理和操作 URL(統一資源定位符)。它可以解析、構建…

GEE:獲取研究區的DEM數據

最近有粉絲追更 GEE 系列,說上次看完 DEM 代碼解析后,自己試著改了一版。今天咱們就來拆解他的優化版代碼 ——基于 SRTM 數據獲取研究區 DEM 并導出,順便聊聊怎么把 GEE 代碼寫得更專業! 先下結論:代碼邏輯完整,3 處細節值得新手抄作業! 這版代碼在數據加載→裁剪→可…

汽車安全 2030 預測 (功能安全FuSa、預期功能安全SOTIF、網絡安全CyberSecurity):成本、效益與行業影響

汽車安全 2030 預測 (功能安全FuSa、預期功能安全SOTIF、網絡安全CyberSecurity):成本、效益與行業影響 到 2030 年,汽車行業將迎來一場安全技術的深度變革,其中 “三重安全防護”(功能安全 FuSa、預期功能安全 SOTIF、網絡安全&…

深入理解設計模式之狀態模式

深入理解設計模式之:狀態模式(State Pattern) 一、什么是狀態模式? 狀態模式(State Pattern)是一種行為型設計模式。它允許一個對象在其內部狀態發生改變時,改變其行為(即表現出不…

Redis的大Key問題如何解決?

大家好,我是鋒哥。今天分享關于【Redis的大Key問題如何解決?】面試題。希望對大家有幫助; Redis的大Key問題如何解決? 1000道 互聯網大廠Java工程師 精選面試題-Java資源分享網 Redis中的“大Key”問題是指某個鍵的值占用了過多…

【STM32開發板】接口部分

一、USB接口 可以看到USBP和USBN與PA12,PA11引腳相接,根據協議,需要添加上拉電阻 二、ADC和DAC 根據原理圖找到可以作為ADC和DAC的引腳 ADC和DAC屬于模擬部分的,所以要接模擬地 三、指示燈電路 找幾個通用的引腳,因為單片機的灌電流比拉電流…

[Hackers and Painters] 讀書筆記 | 設計模式思想 | LISP

目錄 黑客與藝術的關系 “如果你有兩個選擇,就選擇較難的那個“ 金錢不等于財富。創造有價值的東西就是創造財富 項目公式 探討關于優秀程序員的話題 摘抄 保羅格雷厄姆其人其事 人物經歷 圖書介紹 個人作品編輯 譯者序 為什么書呆子不受歡迎 黑客與畫…

Linux基本指令/下

目錄 1.echo、cat與printf 2. > 操作符 與 >> 操作符 3. < 操作符 4.消息傳送 linux文件深入 5.文件類型 6.mv命令 7.時間相關指令 8.查找命令 9.grep命令 10.zip/unzip/tar命令 11.scp命令 12.bc命令 13.uname 指令 14.快捷鍵大全 15.關機/重啟/睡…

Apptrace:APP安全加速解決方案

2021 年&#xff0c;某知名電商平臺在 “618” 大促期間遭遇 DDoS 攻擊&#xff0c;支付系統癱瘓近 2 小時&#xff1b;2022 年&#xff0c;一款熱門手游在新版本上線時因 CC 攻擊導致服務器崩潰。觀察發現&#xff0c;電商大促、暑期流量高峰和年末結算期等關鍵商業周期&#…

NodeJS全棧開發面試題講解——P1Node.js 基礎與核心機制

? 1.1 Node.js 的事件循環原理&#xff1f;如何處理異步操作&#xff1f; 面試官您好&#xff0c;我理解事件循環是 Node.js 的異步非阻塞編程核心。 Node.js 構建在 V8 引擎與 libuv 庫之上。雖然 Node.js 是單線程模型&#xff0c;但它通過事件循環&#xff08;event loop&a…

【深度學習】sglang 的部署參數詳解

SGLang 的部署參數詳解 SGLang(Structured Generation Language)是一個高性能的大語言模型推理框架,專為結構化生成和多模態應用設計。本文將全面介紹SGLang的部署參數,幫助你充分發揮其性能潛力。 ?? SGLang 項目概覽 SGLang是由UC Berkeley開發的新一代LLM推理引擎,…