明解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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...