明解Redis(一)概述

来源:https://www.cnblogs.com/hanyu-2020/archive/2023/03/08/17195779.html
-Advertisement-
Play Games

一、Redis簡介 Redis全稱為 Remote Dictionary Server(遠程詞典服務),開源(BSD許可)的,使用 C 語言開發的。 Redis是記憶體中的數據結構存儲系統,它可以用作資料庫、緩存和消息中間件。 支持多種類型的數據結構,如 字元串(strings), 散列(hashes ...


在這裡插入圖片描述

一、Redis簡介

Redis全稱為 Remote Dictionary Server(遠程詞典服務),開源(BSD許可)的,使用 C 語言開發的。

Redis是記憶體中的數據結構存儲系統,它可以用作資料庫、緩存和消息中間件。

支持多種類型的數據結構,如 字元串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 與範圍查詢, bitmaps, hyperloglogs 和 地理空間(geospatial) 索引半徑查詢。

內置了複製,LUA腳本,LRU驅動事件,事務和不同級別的磁碟持久化,並通過Redis哨兵和自動分區提供高可用性。

1、Redis背景

Redis的開發作者是一名義大利的程式員,名字為Salvatore Sanfilippo(網名:antirez)

image.png
Salvatore 最初創建 Redis 是為了擴展實時日誌分析工具LLOOGG ;早先LLOOGG是基於MySQL的,MySQL的數據是存在磁碟的,存在I/O性能瓶頸,這促使Salvatore編寫一個記憶體型資料庫。
16691213710303018083ffy

讓基本的 Redis 伺服器運行之後,他決定與其他人分享這項工作,在2009年將Redis正式開源。

2、Redis特性

  • 速度快、性能高

    • 基於記憶體
    • 命令執行單線程,避免了不必要的上下文切換及競爭條件
    • key-value 存儲,底層數據結構加持
    • IO多路復用
    • 多線程 IO 模型
    • 支持 Pipelining 命令,可一次發送多條命令來提高吞吐率,減少通信延遲
  • 原子操作

  • 豐富的數據結構,針對value的

    • String(字元串)
    • List(鏈表)
    • Set(集合)
    • Zset(sorted set --有序集合)
    • Hash(哈希類型)
    • Bitmaps:一般用於大數據量的二值性統計,比如簽到、打卡
    • HyperLogLog:用於對數據量超級龐大的日誌做去重統計
    • Geospatial:地理空間,其主要用於地理位置相關的計算
    • Stream:可實現簡單的消息中間件的功能(publish/subscribe)
  • 提供了眾多個性化功能

    • 慢查詢分析
    • 性能測試
    • Pipeline
    • 簡單事務
    • Lua腳本擴展
    • 發佈/訂閱
  • 持久化

  • 主從複製

  • 高可用、分散式集群

  • 客戶端語言廣泛

3、Redis網站

官方文檔:https://redis.io/

中文參考:

作者博客:http://antirez.com/latest/0

二、Redis安裝

前置環境:gcc編譯器

yum -y install gcc automake autoconf libtool make

官網步驟:https://redis.io/docs/getting-started/installation/

下載地址:https://redis.io/download/

Redis是C語言開發的,需要進行安裝,安裝方式在README.MD中即可找到!

wget https://download.redis.io/releases/redis-7.0.4.tar.gz
tar xzf redis-7.0.4.tar.gz
cd redis-7.0.4/

# 編譯,make會找本目錄下的MakeFile文件,成功後src下會生成可執行文件
make
# 安裝到指定目錄之後,可以看到對應的目錄下只有執行文件,就不和源碼混在一起
make install PREFIX=/opt/redis7

Redis編譯安裝完成之後,會生成幾個可執行文件,分別具有不同的作用,我們現在先簡單瞭解下,之後我們陸續會進行介紹!

image.png

image.png

Redis編譯安裝完成之後,我們還可以對其配置一個環境變數,以後啟動Redis就會變得較為方便一些!

# 配置環境變數
vi /etc/profile

export REDIS_HOME=/opt/redis7
export PATH=$PATH:$REDIS_HOME/bin

# 刷新環境變數
source /etc/profile

#查看環境變數
echo $PATH

Redis官方並沒有提供支持Windows環境下的安裝包,生產環境下基本也都是Linux伺服器為主!

官方雖然沒有提供Windows版本的Redis,但是有一些愛搞事情的開發者對其做了維護!

Windows環境下安裝:https://github.com/zkteco-home/redis-windows

三、啟動服務

1、預設前臺啟動

在任意目錄執行 redis-server 命令即可啟動 Redis,但是這種啟動方式會阻塞當前命令行視窗!
image.png

再開一個視窗查看Redis進程:ps -ef | grep redis

通過 Ctrl + C 可以停止 Redis!

image.png

2、命令式後臺啟動

使用 nohub 命令,末尾再添加一個&符,可以使要啟動的程式在後臺以守護進程方式運行。

image.png

這樣的好處是,進程啟動後不會占用一個會話視窗,且其還會在當前目錄,即運行啟動命令的當前目錄中創建一個 nohup.out 文件用於記錄 Redis 的操作日誌。

停止Redis服務

redis-cli shutdown
image.png

3、配置式後臺啟動

1)修改Redis編譯安裝目錄下的redis.conf配置文件,最好先複製一份!

image.png

2)修改配置

image.png

3)啟動Redis

image.png

4、配置Linux服務啟動

我們還可以將Redis配置成一個對應的服務,只需要執行Redis源碼目錄下的utils下 install_server.sh 腳本即可!

如果執行的時候有報如下的錯誤:

image.png

這時候我們只需要將腳本文件打開,將裡面報錯的文本內容註釋掉即可!

image.png

這時候我們再次執行 install_server.sh 腳本,即可看到以下的界面:

這裡我們先選擇預設埠,也可以自己進行埠配置!

一個物理機可以有多個Redis進程,通過埠號進行區分!

可執行程式就一份,但記憶體中如果存在多個實例需要有各自的配置文件、持久化目錄等資源

image.pngimage.png

查看服務狀態:service redis_6379 status

關閉/啟動Redis服務:service redis_6379 stop/start

查看Redis進程:ps -ef | grep redis

image.png

四、Redis客戶端

1、本地命令行工具訪問

本地命令行客戶端的工具為 redis-cli

基本格式:redis-cli -h (host}-p {port}

  • -h:指定要連接的 Redis 伺服器的 IP
  • -p:指定要連接的 Redis 的埠號

image.png

若連接的是本機 Redis,且埠號沒有改變,保持預設的 6379,則-h 與-p 選項可以省略掉!

#在這種狀態下,會把get獲取的16進位xshell的編碼顯示;比如顯示“中”,而不是16進位
redis-cli --raw

image.png

設置密碼

Redis可以設置訪問密碼,可以對用戶進行身份驗證。沒有密碼的用戶可以登錄 Redis,但無法訪問!

訪問密碼的設置位置在 redis.conf 配置文件中。預設是被註釋掉的,沒有密碼。image.png

image.png

沒有進行密碼驗證的用戶,無法對Redis進行讀、寫!

image.png

對於密碼的使用,有兩種方式:

  1. 登錄時未使用密碼,則訪問時先輸入密碼;

image.png

  1. 登錄時直接使用密碼登錄,訪問時無需再輸入密碼!

image.png

image.png

2、遠程圖形化工具訪問

前置配置

遠程客戶端連接之前我們要針對做一些配置,使遠程主機上的客戶端能夠連接並訪問到服務端的 Redis。

  • IP綁定

image.png

還可以配置成bind 0.0.0.0 表示可以和所有的IP進行綁定!

  • 關閉保護模式

預設開啟保護模式,其只允許本機的客戶端訪問。但生產中應該關閉,以確保其它客戶端可以連接 Redis。

image.png

作者:貓的薛定諤
出處:https://www.cnblogs.com/hanyu-2020/

---------------------------------------------------------

個性簽名:獨學而無友,則孤陋而寡聞。做一個靈魂有趣的人!

如果覺得這篇文章對你有小小的幫助的話,記得在右下角點個“推薦”哦,博主在此感謝!

本文內容若有疏漏請多多包涵,如有錯誤麻煩請指正,如有想法交流非常歡迎在下方評論!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. vmware esxi安裝centos8,開啟內核虛擬化 2. 安裝qemu-system-arrch64 操作: wget https://download.qemu.org/qemu-2.11.0.tar.xz tar xvJf qemu-2.11.0.tar.xz cd qemu-2.1 ...
  • 無論你是後端程式員還是前端程式員,都避免不了和Linux打交道。上篇介紹了Linux常用的20個命令其中的10個,本文繼續介紹剩下的10個命令。 11.man 命令 manual的縮寫,即使用手冊的意思,是Linux下最核心的命令之一,用來列出一份完整的說明 語法格式 : man [參數] 常用參數 ...
  • CentOS7.9 搭建內部yum源伺服器同步阿裡yum源 環境說明: 1、企業內網需求:企業內部許多伺服器是不能連接互聯網,但每台centos主機安裝軟體包時都配置本地yum源很麻煩,也缺少第三方yum源,因此在內網搭建一臺yum源伺服器滿足這一需求,同時網路層面策略只允許此yum源伺服器每周日晚 ...
  • 一、下載安裝兩個版本的JDK 官網下載地址:Java Downloads | Oracle 下載安裝成功後,安裝路徑E:\Java\上 JDK8 有兩個包一個jdk1.8.0_231,一個jre1.8.0_231。JDK17只有一個jdk-17.0.5 二、JDK的環境配置 切換環境變數 在系統變數 ...
  • Liunx Vim常用命令 1、打開命令: vi / vim + filename(文件名) 2、退出命令: 強制退出不保存修改的內容 :q! 退出並且保存修改的內容 :wq 強制保存修改的內容然後退出(修改了只讀文件會用到) :wq! 註意:輸入法需要改為英文,中文不生效! 3、游標移動命令 個人 ...
  • 前言 說實話在寫這篇文章的時候,鹹魚不禁又想起了那件男默女淚的往事 我喜歡做筆記,我覺得好記性不如爛筆頭,所以在我的學生以及職業生涯階段,我用過四款筆記應用——Onenote、語雀、印象筆記、Typora 其中我個人覺得體驗最好的非 Typora 莫屬了 ​ 在 2022 年的時候,由於 Typor ...
  • 系統增強工具PowerToys 下載地址:https://github.com/microsoft/PowerToys 什麼是 Windows 系統中,最好的輔助工具? PowerToys 一定可以獲得提名。PowerToys 是一款來自微軟的系統增強工具,就像是一個神奇的系統外掛,整套軟體由若幹子 ...
  • 通用表表達式 通用表表達式(Common Table Expression、CTE)是一個臨時的查詢結果或者臨時表,可以 在其他 SELECT、INSERT、UPDATE 以及 DELETE 語句中使用。通用表表達式只在當前語句中 有效,類似於子查詢。 使用 CTE 的主要好處包括: 提高複雜查詢的 ...
一周排行
    -Advertisement-
    Play Games
  • 1. 說明 /* Performs operations on System.String instances that contain file or directory path information. These operations are performed in a cross-pla ...
  • 視頻地址:【WebApi+Vue3從0到1搭建《許可權管理系統》系列視頻:搭建JWT系統鑒權-嗶哩嗶哩】 https://b23.tv/R6cOcDO qq群:801913255 一、在appsettings.json中設置鑒權屬性 /*jwt鑒權*/ "JwtSetting": { "Issuer" ...
  • 引言 集成測試可在包含應用支持基礎結構(如資料庫、文件系統和網路)的級別上確保應用組件功能正常。 ASP.NET Core 通過將單元測試框架與測試 Web 主機和記憶體中測試伺服器結合使用來支持集成測試。 簡介 集成測試與單元測試相比,能夠在更廣泛的級別上評估應用的組件,確認多個組件一起工作以生成預 ...
  • 在.NET Emit編程中,我們探討了運算操作指令的重要性和應用。這些指令包括各種數學運算、位操作和比較操作,能夠在動態生成的代碼中實現對數據的處理和操作。通過這些指令,開發人員可以靈活地進行算術運算、邏輯運算和比較操作,從而實現各種複雜的演算法和邏輯......本篇之後,將進入第七部分:實戰項目 ...
  • 前言 多表頭表格是一個常見的業務需求,然而WPF中卻沒有預設實現這個功能,得益於WPF強大的控制項模板設計,我們可以通過修改控制項模板的方式自己實現它。 一、需求分析 下圖為一個典型的統計表格,統計1-12月的數據。 此時我們有一個需求,需要將月份按季度劃分,以便能夠直觀地看到季度統計數據,以下為該需求 ...
  • 如何將 ASP.NET Core MVC 項目的視圖分離到另一個項目 在當下這個年代 SPA 已是主流,人們早已忘記了 MVC 以及 Razor 的故事。但是在某些場景下 SSR 還是有意想不到效果。比如某些靜態頁面,比如追求首屏載入速度的時候。最近在項目中回歸傳統效果還是不錯。 有的時候我們希望將 ...
  • System.AggregateException: 發生一個或多個錯誤。 > Microsoft.WebTools.Shared.Exceptions.WebToolsException: 生成失敗。檢查輸出視窗瞭解更多詳細信息。 內部異常堆棧跟蹤的結尾 > (內部異常 #0) Microsoft ...
  • 引言 在上一章節我們實戰了在Asp.Net Core中的項目實戰,這一章節講解一下如何測試Asp.Net Core的中間件。 TestServer 還記得我們在集成測試中提供的TestServer嗎? TestServer 是由 Microsoft.AspNetCore.TestHost 包提供的。 ...
  • 在發現結果為真的WHEN子句時,CASE表達式的真假值判斷會終止,剩餘的WHEN子句會被忽略: CASE WHEN col_1 IN ('a', 'b') THEN '第一' WHEN col_1 IN ('a') THEN '第二' ELSE '其他' END 註意: 統一各分支返回的數據類型. ...
  • 在C#編程世界中,語法的精妙之處往往體現在那些看似微小卻極具影響力的符號與結構之中。其中,“_ =” 這一組合突然出現還真不知道什麼意思。本文將深入剖析“_ =” 的含義、工作原理及其在實際編程中的廣泛應用,揭示其作為C#語法奇兵的重要角色。 一、下劃線 _:神秘的棄元符號 下劃線 _ 在C#中並非 ...