」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 雷迪斯

雷迪斯

發佈於2024-11-06
瀏覽:995

Redis

Redis 是一個 NOSQL 資料庫,資料以鍵值對的形式儲存。
Redis 將資料儲存在主記憶體上,這意味著它速度快,但易失性,不像 PostgreSQL 等資料庫系統將資料儲存在磁碟上。

概述

在具有伺服器和資料庫的應用程式中,存取資料庫上的資訊會導致延遲。

像redis這樣的Key-Value資料庫通常保存在這些資料庫前面,存取操作需要2步驟:

  1. 如果資訊在快取中,快取命中,應用程式從redis中檢索資訊並發送給客戶端
  2. 如果沒有,快取未命中,應用程式從資料庫中獲取信息,將其發送到客戶端並將其儲存在快取中。

透過這兩個步驟,並且考慮到主記憶體的延遲低於磁碟,我們可以說Redis 可用於儲存和存取頻繁的、最近的資料和昂貴的操作,從而使應用程式速度提高10 到50 倍。

因此,事實是,如果您要建立一個未來可擴展的應用程序,Redis(或類似於 Redis 的資料庫)是必不可少的。


問題

  1. Redis 開源嗎? :是的,Redis 是開源的,具有特殊類型的許可證,但也有其他替代方案,例如 Snapchat 的 KeyDB 和 Memcached 都是開源的。 KeyDB 是 Redis 的一個分支,但目前只能在 Linux 上運作。

  2. Redis支援Windows嗎? :不,Redis不支援Windows,但可以安裝WSL/Ubuntu並使用
    安裝redis

sudo apt install redis
  1. 我正在使用 WSL,為什麼 redis 伺服器無法在我的系統上運行:在 WSL 上運行時,您可以使用以下命令運行 redis-server
redis-server --port 6000

其中 6000 是您要執行它的本機伺服器上的連接埠。 (即 127.0.0.1:6000)。

大多數問題是由於 redis-server 使用的預設連接埠已被使用

  1. Redis有客戶端庫嗎? :確實有。您可以在 Redis 網站上找到它們,也可以自己建立一個。

安裝Redis

在Linux上,安裝redis就像

sudo apt install redis
Mac 上的


brew install redis

運行Redis

您需要 上有 2 個終端實例

在第一個運行您的伺服器的伺服器上

redis-server -port 

然後在第二個上運行您的客戶端

redis-cli

建置Web應用程式時,不需要執行客戶端但需要運行伺服器

Redis 概念

redis中有3個你應該了解的主要概念或4

  1. 鍵值對
  2. 列表
  3. 哈希值

所有其他資料結構主要是第一個的高階實作

透過列表,我的意思是陣列而不是鍊錶,這就是redis的稱呼。


鍵值對

鍵值對是大多數程式語言中常見的資料結構。

  1. 在Python中稱為字典或簡稱dict

  2. 在Javascript中稱為Maps

  3. 在 C# 中稱為 Dictionaries

Redis中鍵值對的操作主要有6種

營運 說明 範例 進一步說明
建立鍵值對 設定姓名約翰 設定鍵映射到值
得到 取得鍵的值 取得名稱 這將返回約翰
刪除 刪除鍵值對 刪除名稱 這將從資料庫中刪除鍵值對名稱
存在 檢查redis資料庫中是否存在某個key 存在名稱 傳回 1 或 0 對應 True 或 False
沖洗廳 清除整個快取 沖洗廳 或多或少類似 postgres 中的 DROP TABLE
按鍵 * 傳回資料庫中的所有鍵 按鍵 *

還有基於時間的操作。在基於時間的操作中,金鑰僅在快取中保存一段設定的時間,時間到期後,快取會刪除該金鑰。

有 2 個主要的基於時間的操作

營運 說明 範例 進一步說明
到期 定義鍵後使其過期 使姓名 10 過期 10秒後刪除鍵值名稱。該鍵必須在調用 EXPIRE 之前使用 SET 定義。常見的替代方案是;
SETEX 定義後使鍵過期 SETEX 年齡 30 15 將鍵年齡設為值30,並在15秒後刪除鍵值對
TTL 生存時間 TTL年齡 返回刪除年齡鍵之前剩餘的時間

部落格已經太長了,我會討論listssetshashmaps以及關於redis可能的面試問題 在另一個部落格中。

如果您有任何疑問,請在下面評論,我會盡力回答⭐。快樂編碼

版本聲明 本文轉載於:https://dev.to/ezekiel_77/redis-3njh?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何干淨地刪除匿名JavaScript事件處理程序?
    如何干淨地刪除匿名JavaScript事件處理程序?
    刪除匿名事件偵聽器將匿名事件偵聽器添加到元素中會提供靈活性和簡單性,但是當要刪除它們時,可以構成挑戰,而無需替換元素本身就可以替換一個問題。 element? element.addeventlistener(event,function(){/在這里工作/},false); 要解決此問題,請考...
    程式設計 發佈於2025-04-06
  • Python讀取CSV文件UnicodeDecodeError終極解決方法
    Python讀取CSV文件UnicodeDecodeError終極解決方法
    在試圖使用已內置的CSV模塊讀取Python中時,CSV文件中的Unicode Decode Decode Decode Decode decode Error讀取,您可能會遇到錯誤的錯誤:無法解碼字節 在位置2-3中:截斷\ uxxxxxxxx逃脫當CSV文件包含特殊字符或Unicode的路徑逃...
    程式設計 發佈於2025-04-06
  • Android如何向PHP服務器發送POST數據?
    Android如何向PHP服務器發送POST數據?
    在android apache httpclient(已棄用) httpclient httpclient = new defaulthttpclient(); httppost httppost = new httppost(“ http://www.yoursite.com/script.p...
    程式設計 發佈於2025-04-06
  • 大批
    大批
    [2 數組是對象,因此它們在JS中也具有方法。 切片(開始):在新數組中提取部分數組,而無需突變原始數組。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    程式設計 發佈於2025-04-06
  • 找到最大計數時,如何解決mySQL中的“組函數\”錯誤的“無效使用”?
    找到最大計數時,如何解決mySQL中的“組函數\”錯誤的“無效使用”?
    如何在mySQL中使用mySql 檢索最大計數,您可能會遇到一個問題,您可能會在嘗試使用以下命令:理解錯誤正確找到由名稱列分組的值的最大計數,請使用以下修改後的查詢: 計數(*)為c 來自EMP1 按名稱組 c desc訂購 限制1 查詢說明 select語句提取名稱列和每個名稱...
    程式設計 發佈於2025-04-06
  • HTML格式標籤
    HTML格式標籤
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    程式設計 發佈於2025-04-06
  • 為什麼PHP的DateTime :: Modify('+1個月')會產生意外的結果?
    為什麼PHP的DateTime :: Modify('+1個月')會產生意外的結果?
    使用php dateTime修改月份:發現預期的行為在使用PHP的DateTime類時,添加或減去幾個月可能並不總是會產生預期的結果。正如文檔所警告的那樣,“當心”這些操作的“不像看起來那樣直觀。 考慮文檔中給出的示例:這是內部發生的事情: 現在在3月3日添加另一個月,因為2月在2001年只有2...
    程式設計 發佈於2025-04-06
  • Java是否允許多種返回類型:仔細研究通用方法?
    Java是否允許多種返回類型:仔細研究通用方法?
    在Java中的多個返回類型:一種誤解類型:在Java編程中揭示,在Java編程中,Peculiar方法簽名可能會出現,可能會出現,使開發人員陷入困境,使開發人員陷入困境。 getResult(string s); ,其中foo是自定義類。該方法聲明似乎擁有兩種返回類型:列表和E。但這確實是如此嗎...
    程式設計 發佈於2025-04-06
  • 如何解決由於Android的內容安全策略而拒絕加載腳本... \”錯誤?
    如何解決由於Android的內容安全策略而拒絕加載腳本... \”錯誤?
    Unveiling the Mystery: Content Security Policy Directive ErrorsEncountering the enigmatic error "Refused to load the script..." when deployi...
    程式設計 發佈於2025-04-06
  • 您可以使用CSS在Chrome和Firefox中染色控制台輸出嗎?
    您可以使用CSS在Chrome和Firefox中染色控制台輸出嗎?
    在javascript console 中顯示顏色是可以使用chrome的控制台顯示彩色文本,例如紅色的redors,for for for for錯誤消息? 回答是的,可以使用CSS將顏色添加到Chrome和Firefox中的控制台顯示的消息(版本31或更高版本)中。要實現這一目標,請使用以下...
    程式設計 發佈於2025-04-06
  • 如何有效地轉換PHP中的時區?
    如何有效地轉換PHP中的時區?
    在PHP 利用dateTime對象和functions DateTime對象及其相應的功能別名為時區轉換提供方便的方法。例如: //定義用戶的時區 date_default_timezone_set('歐洲/倫敦'); //創建DateTime對象 $ dateTime = ne...
    程式設計 發佈於2025-04-06
  • 如何在其容器中為DIV創建平滑的左右CSS動畫?
    如何在其容器中為DIV創建平滑的左右CSS動畫?
    通用CSS動畫,用於左右運動 ,我們將探索創建一個通用的CSS動畫,以向左和右移動DIV,從而到達其容器的邊緣。該動畫可以應用於具有絕對定位的任何div,無論其未知長度如何。 問題:使用左直接導致瞬時消失 更加流暢的解決方案:混合轉換和左 [並實現平穩的,線性的運動,我們介紹了線性的轉換。...
    程式設計 發佈於2025-04-06
  • 如何使用替換指令在GO MOD中解析模塊路徑差異?
    如何使用替換指令在GO MOD中解析模塊路徑差異?
    在使用GO MOD時,在GO MOD 中克服模塊路徑差異時,可能會遇到衝突,其中可能會遇到一個衝突,其中3派對軟件包將另一個帶有導入套件的path package the Imptioned package the Imptioned package the Imported tocted pac...
    程式設計 發佈於2025-04-06
  • 如何同步迭代並從PHP中的兩個等級陣列打印值?
    如何同步迭代並從PHP中的兩個等級陣列打印值?
    同步的迭代和打印值來自相同大小的兩個數組使用兩個數組相等大小的selectbox時,一個包含country代碼的數組,另一個包含鄉村代碼,另一個包含其相應名稱的數組,可能會因不當提供了exply for for for the uncore for the forsion for for ytry...
    程式設計 發佈於2025-04-06

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3