【從零開始學習Redis】初識Redis

初識Redis

一句話理解Redis:

Redis是一個基于內存的、支持多種數據結構的高性能鍵值數據庫,常被用于緩存、分布式鎖和消息隊列。

和 MySQL 的區別:

特點RedisMySQL
類型非關系型(NoSQL)關系型(SQL)
存儲結構鍵值對(Key-Value)表結構(行、列)
存儲位置主要存儲在內存中,可選擇持久化到磁盤存儲在磁盤中
訪問速度極快(納秒級)相對較慢(毫秒級)
使用場景緩存、排行榜、會話存儲、限流、隊列等持久化數據、復雜查詢、事務處理等

認識NoSQL

MySQL是類似下圖的結構:

而NoSQL沒有這種強約束,不僅僅是鍵值對,同時也可以以json形式存儲,常見的還有Graph,但使用的相對較少,一般用于社交app

總結一下區別如下:

SQLNoSQL
數據結構結構化(Structured)非結構化
數據關聯關聯的(Relational)無關聯的
查詢方式SQL查詢非SQL
事務特性ACIDBASE
存儲方式磁盤內存
擴展性垂直水平
使用場景1)數據結構固定
2)相關業務對數據安全性、一致性要求較高
1)數據結構不固定
2)對一致性、安全性要求不高
3)對性能要求

認識Redis

特征:

  • 鍵值(key-value)型, value支持多種不同數據結構, 功能豐富
  • 單線程, 每個命令具備原子性
  • 低延遲, 速度快 (基于內存、IO多路復用、良好的編碼)。
  • 支持數據持久化
  • 支持主從集群、分片集群
  • 支持多語言客戶端

在這里我有個疑問,為什么讀寫內存就比讀寫磁盤快呢?


🚀 1. 硬件本質不同
項目內存(RAM)磁盤(HDD/SSD)
介質電子磁性 or 閃存
訪問方式直接隨機訪問(Random Access)順序訪問為主(特別是機械硬盤)
速度納秒級(10?? 秒)毫秒級(10?3 秒,HDD)或微秒級(10?? 秒,SSD)
  • 內存是電路層級的操作,訪問一個數據大概只需幾十納秒;
  • 機械硬盤(HDD)要轉磁盤、移動磁頭來定位數據,耗時幾個毫秒;
  • 固態硬盤(SSD)雖然比 HDD 快很多,但依舊是微秒級,遠不如內存快。
2.操作系統層面

讓我想起了之前操作系統老師說過的關于內存,單片機是沒有操作系統的,所以每次寫完代碼需要借助工具把代碼燒錄進去,程序才能跑。而且單片機的 CPU是直接操作內存的物理地址。

這種情況下,不可能在內存中運行兩個程序,如果第一個程序在地址為1000的地方寫入一個值,那么第二個程序就會覆蓋掉當前位置的全部內容,所以程序會立刻崩潰。

操作系統提供了一種機制,將不同進程的虛擬地址和不同內存的物理地址映射起來。于是,程序所使用的內存地址叫虛擬內存地址,實際在硬件里面的空間地址叫物理內存地址。

使得CPU直接訪問物理內存的數據,無需系統調用,全靠硬件完成,所以速度會很快。而磁盤讀寫則會涉及用戶態與內核態的切換、函數調用、磁頭移動、磁盤旋轉等,時間不是一個量級的。

知識是網狀的,互相關聯、相互貫通,很多看似復雜的問題其實都是基礎知識的串聯,多思考多發問是非常必要的。

安裝Redis并熟悉啟動方式

安裝redis

我是使用的Ubuntu 22.04,注意當前指令僅適用于Ubuntu,通過apt安裝穩定版本,

sudo apt update
sudo apt install -y redis

可以通過以下指令檢查是否安裝成功

# 啟動 Redis(如果還未啟動)
sudo systemctl start redis# 設置開機自啟(可選)
sudo systemctl enable redis# 檢查運行狀態
sudo systemctl status redis# 測試連接
redis-cli ping
# 返回 PONG 表示 Redis 正常運行

如果要關閉redis

ps -ef | grep redis #查出redis進程PID#關閉redis進程
sudo kill 4254 #4254是舉例,要替換為自己獲取的PID#檢查是否關閉成功
ps -ef | grep redis#如果發現redis換了一個PID仍在運行,可能是被某服務器托管自動重啟
#如果使用systemd管理redis服務,用以下指令關閉redis
sudo systemctl stop redis
設置后臺啟動
  • 修改監聽的地址,默認是127.0.0.1,會導致只能在本地訪問。修改為0.0.0.0則可以在任意IP訪問,生產環境不要設置為0.0.0.0
#一般情況下,redis.conf位置在/etc/redis/redis.conf
#使用root權限打開配置文件,可以用vim或者nano文本編輯器打開,看個人習慣
#不使用sudo,權限不夠,無法修改文件內容
sudo nano /etc/redis/redis.conf
或者sudo vim /etc/redis/redis.conf如圖
bind 0.0.0.0

  • 守護線程,修改為yes后即可后臺運行
daemonize yes

  • 為保證安全性,設置訪問redis必須輸入密碼
requirepass 123321 #可以設置為自己想設置的密碼

  • 可以打開一下日志功能,便于報錯查找問題

像我的是自動打開的,而且日志文件位置如圖。

一般來說,使用Ubuntu,通過apt一鍵部署,在這里只需要修改監聽IP和設置密碼。

修改完成后,使用指定配置文件啟動redis,并檢查是否成功設置后臺啟動。

  • 打開開機自啟

設置 Redis 開機自啟(推薦做法)

在這之前先kill掉redis進程

sudo killall redis-server
  1. 啟用 Redis 服務
sudo systemctl enable redis-server
  1. 立即啟動 Redis 服務
sudo systemctl start redis-server
  1. 查看 Redis 服務狀態
sudo systemctl status redis-server

如果你看到 active (running) 狀態,說明 Redis 正常運行且設置為開機自啟了。

常用命令總結:

操作命令
啟動 Redissudo systemctl start redis-server
停止 Redissudo systemctl stop redis-server
重啟 Redissudo systemctl restart redis-server
查看狀態sudo systemctl status redis-server
設置開機啟動sudo systemctl enable redis-server
禁用開機啟動sudo systemctl disable redis-server

現在對于redis的基本配置就結束了,后面即將開始redis命令行的學習

如果我的內容對你有幫助,請點贊,評論,收藏。創作不易,大家的支持就是我堅持下去的動力,希望我們共同進步

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

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

相關文章

CUDA雜記--nvcc使用介紹

nvcc 是 NVIDIA CUDA 生態的核心編譯器,負責將 CUDA C/C 代碼(混合了主機代碼和設備代碼)編譯為可在 CPU 和 GPU 上運行的二進制文件。它不僅是一個簡單的編譯器,更是一個“編譯驅動程序”,協調多個工具鏈(…

Codeforces Round 1040 (Div. 2)(補題)

文章目錄前言A.Submission is All You NeedB. PathlessC.Double PerspectiveD.Stay or Mirror前言 又被卡在第二題了,當時腦子跟犯糊涂似的,B題越理越亂,導致比賽結束,還在想著題,徹夜難眠! A.Submission …

Apifox 7 月更新|通過 AI 命名參數及檢測接口規范、在線文檔支持自定義 CSS 和 JavaScript、鑒權能力升級

Apifox 新版本上線啦! 看看本次版本更新主要涵蓋的重點內容,有沒有你所關注的功能特性: AI 助力接口設計 通過 AI 為參數命名 支持讓 AI 對接口進行規范性檢測 在線文檔功能增強 在線文檔支持自定義 CSS 和 JavaScript 目錄支持設置展示…

Node.js以及異步編程

什么是服務器?我們知道客戶端通過訪問服務器,然后服務器去操作數據庫把我們想要的數據拿過來給客戶端。比如服務器就是餐廳的服務員,數據庫就是廚房,客戶端就是我們的顧客。首先我們點菜,服務器告訴廚師做飯&#xff0…

UniApp 實現頂部固定導航欄 Tab 及滾動變色效果

頂部導航欄是一個非常常見的組件,尤其是固定在頂部的 Tab 導航,既能方便用戶快速切換內容,又能保持頁面結構的清晰。本文將詳細介紹如何在 UniApp Vue3 TypeScript 項目中實現一個固定在頂部、且能根據滾動狀態改變樣式的 Tab 導航欄。效果…

c++泛型編程

C泛型編程 1. 基本概念 1.1 泛型編程(Generic Programming) 泛型編程是C中一種重要的編程范式,它通過 參數化類型 來實現代碼的通用性和復用性。 1.2 模板(Templates) 模板 是泛型編程的基礎,允許編寫與數據…

Vue.js + Node.js 開發前后臺框架

在 Vue.js + Node.js 開發前后臺框架時,推薦采用現代化的技術棧組合和最佳實踐。以下是一個高效、可擴展的全棧框架方案: 技術棧推薦 層級 技術選型 說明 前端框架 Vue 3 (Composition API) 最新Vue核心庫,推薦使用<script setup>語法 UI組件庫 Element Plus / Ant D…

Vision Transformer (ViT) 詳解:當Transformer“看見”世界,計算機視覺的范式革命

摘要: 長久以來&#xff0c;卷積神經網絡&#xff08;CNN&#xff09;憑借其精心設計的歸納偏置&#xff08;inductive biases&#xff09;&#xff0c;無可爭議地統治著計算機視覺領域。然而&#xff0c;一篇名為《An Image is Worth 16x16 Words》的論文徹底改變了這一格局&a…

go goroutine chan 用法

方法1 代碼 package mainimport ("fmt""sync""time" )func main() {allChan : make(chan interface{}, 3)var sendWg, recvWg sync.WaitGroup // 分別同步發送和接收// 發送goroutinesendWg.Add(1)go func() {defer sendWg.Done()for i : 0; i &…

Web前端文件上傳安全與敏感數據安全處理

一、文件上傳安全1. 文件上傳時的核心安全檢查點文件上傳是 Web 應用的高風險功能&#xff0c;需從多維度驗證&#xff0c;防止惡意文件上傳&#xff08;如木馬、病毒&#xff09;或路徑攻擊&#xff0c;關鍵檢查點包括&#xff1a;MIME 類型驗證檢查請求頭中的 Content-Type&a…

文法中的間接左遞歸

&#x1f31f; 第一步&#xff1a;理解基本概念? 什么是文法&#xff08;Grammar&#xff09;&#xff1f;在編程語言或語法分析中&#xff0c;文法 是一組規則&#xff0c;用來描述一種語言的結構。例如&#xff1a;S → A a A → B b B → S c 這表示&#xff1a;S 可以…

Anthropic:跨越生產效能拐點的AI增長飛輪

資本競賽中的戰略轉折點 人工智能領域的競爭已經從理念之爭演變為資本、算力與地緣政治影響力的全面較量。Anthropic傳聞中的1700億美元估值&#xff0c;如果成為現實&#xff0c;將標志著前沿AI發展格局的地震式轉變。這不僅僅是構建更智能模型的問題&#xff0c;更是為主導下…

【Unity3D實例-功能-移動】小兵移動-通過鼠標點擊進行

在Unity的世界里&#xff0c;當你輕點鼠標&#xff0c;角色仿佛被賦予了新的使命&#xff0c;沿著一條無形的軌跡&#xff0c;向著地圖上的目標點進發。每一次移動&#xff0c;不僅是簡單的位移&#xff0c;更是對未知的探索。這種交互&#xff0c;讓玩家與游戲世界緊密相連&am…

從0到1學PHP(十四):PHP 性能優化:打造高效應用

目錄一、PHP 性能評估與分析1.1 性能指標體系1.2 性能分析工具使用1.3 性能瓶頸定位方法與流程二、代碼層面優化技巧2.1 高效的循環與條件判斷寫法2.2 函數與類的優化設計2.3 內存管理與垃圾回收機制優化三、緩存策略與實現3.1 數據緩存3.2 頁面緩存與部分緩存技術3.3 OPcache …

移動管家手機控車系統硬件安裝與軟件綁定設置

移動管家手機控車系統硬件安裝與軟件綁定配合使用&#xff0c;具體設置步驟如下&#xff1a;一、硬件安裝準備 ?加裝智能控制主機?&#xff1a;需在車輛上加裝移動管家專用智能控制模塊&#xff0c;該模塊需與原車電路系統連接&#xff0c;并將原車鑰匙芯片焊接至主控盒內以實…

51單片機入門:數碼管原理介紹及C代碼實現

本文是江協科技up的課堂筆記&#xff01;大家可以去bilibili配合這位up的51單片機入門教程食用&#xff0c;效果更佳~我這里進行詳細介紹&#xff0c;希望你忘記數碼管的時候來這里看看&#xff01;&#xff08;你猜我為什么寫這個TAT&#xff09;一.基本介紹LED數碼管&#xf…

Apache Camel 簡介

相關文檔地址 https://camel.apache.org/components/next/index.htmlhttps://camel.apache.org/components/4.10.x/languages/simple-language.htmlhttps://camel.apache.org/manual/exception-clause.htmlhttps://camel.apache.org/manual/index.htmlhttps://camel.apache.org…

IP離線庫 輸入IP地址立即返回IP所在地址信息(支持Java、Python)

描述 本文實現&#xff1a; 1、離線查詢IP地址 2、IP地址精確到區域 3、IP地址支持國外IP 此時需要一個創建&#xff0c;比如我輸入一個8.8.8.8的IP立馬就需要返回給我一個中文地址信息&#xff0c; 類似于百度的IP搜索&#xff1a; 113.111.186.123如果現在離線環境或者在…

解決MySQL刪除/var/lib/mysql下的所有文件后無法啟動的問題

刪除 MySQL 數據目錄 /var/lib/mysql 下的所有文件后&#xff0c;MySQL 將無法啟動&#xff0c;因為該目錄包含了數據庫的所有數據文件、配置文件和系統表。當這些文件被刪除時&#xff0c;MySQL 無法找到必要的數據和配置&#xff0c;從而無法正常啟動。本文將詳細介紹解決這個…

蒼穹外賣項目學習——day1(項目概述、環境搭建)

文章目錄一、軟件開發整體介紹1.1 軟件開發流程1.2 角色分工1.3 軟件環境分類二、蒼穹外賣項目介紹2.1 定位2.2 功能架構2.3 技術選型三、開發環境搭建3.1 前端環境3.2 后端環境3.3 前后端聯調3.4 登錄功能優化四、接口文檔管理4.1 YApi4.2 Swagger (Knife4j)一、軟件開發整體介…