詳細講解 Redis 的兩種安裝部署方式

来源:https://www.cnblogs.com/jamaler/archive/2019/11/18/11882806.html
-Advertisement-
Play Games

Redis 是一款比較常用的 NoSQL 資料庫,我們通常使用 Redis 來做緩存,這是一篇關於 Redis 安裝的文章,所以不會涉及到 Redis 的高級特性和使用場景,Redis 能夠相容絕大部分的 POSIX 系統,例如 Linux、OS X 等,但是很遺憾不支持在 Windows 上安裝, ...


Redis 是一款比較常用的 NoSQL 資料庫,我們通常使用 Redis 來做緩存,這是一篇關於 Redis 安裝的文章,所以不會涉及到 Redis 的高級特性和使用場景,Redis 能夠相容絕大部分的 POSIX 系統,例如 Linux、OS X 等,但是很遺憾不支持在 Windows 上安裝,當然如果你需要在 windows 下安裝 redis 的話,也是可以的,微軟公司的開源技術組在 GitHub 上 維護一個 Redis 的分支,GitHub 地址為:https://github.com/microsoftarchive/redis,我看了一下這上面的版本比較舊,所以我個人不推薦使用這個來安裝 Redis ,Windows 用戶可以使用 Docker 容器來安裝,也是非常方便、簡單的,接下來我們就一起來看看 Redis 的安裝方式吧。

1、Linux 系統下安裝 redis

安裝

在 redis 官網中有安裝教程,鏈接:https://redis.io/download,安裝步驟我拷貝過來了,步驟如下:

$ wget http://download.redis.io/releases/redis-5.0.6.tar.gz
$ tar xzf redis-5.0.6.tar.gz
$ cd redis-5.0.6
$ make

我在 /usr/local 目錄下麵操作的這些命令,也就是說 Redis 的安裝目錄為 /usr/local ,這些命令執行完之後你的機器上安裝好 Redis ,在安裝的過程中,如果你的機器上沒有安裝 gcc ,你安裝好 gcc 之後再 make 可能會報以下錯誤

jemalloc/jemalloc.h: No such file or directory

當時沒有截取詳細的錯誤信息,只把主要的一段截取出來了,這個錯誤的原因是我們上一次 make 報錯之後,有編譯後的文件,所以我們需要清除上一次的殘留文件再重新編譯,將 make 換成 make distclean && make 就可以了。

redis.conf 文件

redis.conf 是 Redis 的配置文件,redis 的所有配置有在這個文件裡面,這個文件挺大的有接近 1400 行,有關 redis 的操作、使用說明都在裡面,可以詳細的閱讀閱讀這個配置文件,大部分情況下我們使用預設配置就行,只需要設置少量配置就行。redis.conf 的存放位置在 Redis 的安裝目錄下,我這裡是 /usr/local/redis-5.0.5 目錄下,一起來看看我們可能會修改的幾個配置:

  • bind 127.0.0.1:允許訪問機器的IP,預設只有本機才能訪問,你可以修改 ip 來運行其他機器也能訪問,但是如果你想讓所有機器都可以訪問的話,直接設置為 bind 0.0.0.0 就行了。
  • port 6379:redis 實例啟動的埠,預設為 6379
  • daemonize no:是否以守護進程的方式運行,預設是 no,也就是說你把啟動視窗關閉了,redis 實例也就關閉了,一般這個選項我們設置為 yes,以守護進程的方式運行,說俗一點就是後臺運行。
  • pidfile /var/run/redis_6379.pid:如果我們使用守護進程方式運行的話 ,就會產生一個尾碼名為 .pid 的文件,這個使用預設的也行
  • dir ./:持久化文件存放位置,這個配置我們還是設置一下為好,我這裡設置為 dir /usr/local/redis_data
  • appendonly no:是否開啟 AOF 持久化方式,redis 預設只開啟了 RDB 模式,這裡我們設置為 yes,兩種方式都開啟,雙重保險,關於這兩種方式的區別,我們後面在學習

好像大概設置這幾個就好了,更多關於 redis.conf 的配置,你可以詳細閱讀 redis.conf 配置文件或者查閱相關手冊。

redis 的啟動

Redis 的啟動非常簡單,Redis 安裝完成之後,會在 /usr/local/redis-5.0.5/src 存放 Redis 的 shell 交互命令,其中有一個 redis-server ,這個就是 Redis 的啟動命令,執行:

./redis-server /usr/local/redis-5.0.5/redis.conf

後面跟的是 redis.conf 的文件路徑,不出意外的話我們將啟動成功,你會看到如下界面:

redis 啟動

這裡我們使用的是守護進程的方式啟動,所以不會出現帶有 redis logo 的啟動界面,我們可以使用 shell 命令登錄到 Redis 中,還是在 src 目錄下麵,執行下麵這條命令:

./redis-cli

這命令你就進入了 shell 交互界面,./redis-cli 命令可以帶一些參數,例如 -h IP 這個就可以進入指定機器的 Redis 實例,進入之後你就可以進行一些操作了,如下圖所示:

redis 操作

redis 關閉

Redis 的關閉方式有兩種,一種是在 shell 交互界面關閉,另一種是 kill + 進程號關閉 Redis 實例的方式

shell 交互界面關閉

shutdown [nosave|save]

在 shell 交互界面輸入 shutdown 命令就可以關閉 Redis 實例,後面有一個可選參數,nosave 就是不將記憶體中的數據持久化,save 就是將記憶體中的數據持久化。shutdown 關閉方式是比較優雅的關閉方式,建議使用這種關閉方式

Kill + 進程號關閉 Redis 實例

使用 ps -ef|grep redis 查看 Redis 進程號,如下圖所示:

查看 redis 進程號

在這裡找到我們需要關閉 redis 實例的進程號,比如這裡我們的進程號為 27133,那麼我們就直接使用 kill 27133 關閉 Redis 實例服務,這種方式我們需要註意一個地方,那就是需要我們去把 pid 文件刪掉,pid 文件存放的位置我們在 redis.conf 里配置的 pidfile /var/run/redis_6379.pid,我們需要到 /var/run 目錄下把 redis_6379.pid 刪掉,這樣下一次才能正常重啟 Redis 服務。

上面兩種方式都可以關閉 Redis 服務,隨便選一種都行,但是切記不要使用 Kill 9 方式關閉 Redis 進程,這樣 Redis 不會進行持久化操作,除此之外,還會造成緩衝區等資源不能優雅關閉,極端情況下會造成 AOF 和複製丟失數據的情況

redis 開機自啟動

在伺服器上我們可能需要將 Redis 設置為開機自啟動,其實這個也非常簡單,我們只需要做以下四步操作即可。

1、 編寫配置腳本 vim /etc/init.d/redis
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
#chkconfig: 2345 80 90
#description:auto_run
# 埠號
REDISPORT=6379
# 啟動命令
EXEC=/usr/local/redis-5.0.5/src/redis-server
# shell 交付命令
CLIEXEC=/usr/local/redis-5.0.5/src/redis-cli
# pid 存放位置
PIDFILE=/var/run/redis_${REDISPORT}.pid
# redis 配置文件
CONF="/usr/local/redis-5.0.5/redis.conf"

case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                $EXEC $CONF
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $CLIEXEC -p $REDISPORT shutdown
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac
2、修改 redis.conf,設置 redis 為守護進程方式運行
################################# GENERAL #####################################

# By default Redis does not run as a daemon. Use 'yes' if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
daemonize yes
3、修改文件執行許可權
chmod +x /etc/init.d/redis
4、設置開機啟動
# 啟動 redis
service redis start
# 停止 redis
service redis stop
# 開啟服務自啟動
chkconfig redis on

2、Docker 安裝 Redis

Docker 安裝 Redis 整體來說比較方便,我說的是非生產環境,就是自己搭著測試或者學習的環境,下麵的步驟全部建立在你已經在你的電腦上安裝了 Docker 的基礎上,下麵就來開啟安裝之旅。

1、拉取 redis 鏡像

docker pull redis

2、快速啟動

docker run -p 6379:6379 --name myredis -d redis redis-server --appendonly yes

這種方式啟動使用的預設的 redis.conf 配置,我們先來看看這幾個參數的意思

  • -p 6379:6379:映射埠,前面的 6379 是外部 redis 埠,後面的 6379 是容器內部的 redis 埠
  • --name myredis :容器對應的名稱
  • redis redis-server:redis 代表著 redis 鏡像 redis-server 表示的是執行的命令,也是就 redis 的啟動命令,跟我們 linux 下麵的 ./redis-server 一樣
  • --appendonly yes:開啟 AOF 持久化
3、使用 redis

通過上面的步驟,我們已經在 Docker 中啟動了 Redis 服務,下麵我們就來通過 redis-cli 訪問一下,使用下麵這條命令就可以啟動 redis-cli

docker exec -it dockerRedis redis-cli

其中 dockerRedis 是你啟動 Redis 容器名稱,不出意外的話,你可以啟動一個 redis-cli 客戶端,如下圖所示:

docker redis-cli 客戶端

上面就是使用 Docker 簡單的啟動 Redis ,整體來說比 linux 上面安裝啟動要方便不少,主要是你可以在 windows 系統上運行,雖然最終它還是運行在 linux 上面的,但是這個過程我們是無感知的。你可以能會問:我想在啟動的時候知道 redis.conf 可行不?答案是可行的,但是如果你對 Docker 不瞭解的話,可能會遇到一些坑,我就遇到了,因為我對 Docker 不是太瞭解,平時使用 docker 都是只需要傳入參數就好了,沒有傳過文件。關於啟動時指定配置文件,在 redis 鏡像那裡有說明,但是是 linux 下麵的,並不是 windows 系統下的 Docker 配置方式,所以我就百度到了下麵這段命令

docker run -v /d:/dockerdata/redis/config/redis.conf:/usr/local/etc/redis/redis.conf --name myredis redis redis-server /usr/local/etc/redis/redis.conf

這段命令就是一個坑,壓根就沒有,啟動這條命令,你將得到如下反饋:

顯然這條命令是沒有用的,當然這隻是我個人認為,也許是我操作失誤,也許是我知識面不夠,如果朋友們發現錯誤還請多多指教,這裡我就先當它是錯誤的,正確的做法是在 Docker 的宿主機上存放 redis.conf 文件,顯然 Docker 的宿主機並不是 windows 系統,而是啟動在 windows 系統上的虛擬機,所以我們需要進入到虛擬機裡面,Docker Quickstart Terminal 啟動預設界面並沒有正真的登錄到虛擬機,所以我們需要更改登錄方式,使用 docker-machine ssh 命令,如下圖所示:

Docker Quickstart Terminal 啟動方式

這樣我們就進入到了真正的虛擬機裡面,我們就在一臺虛擬機上操作了,跟我們在 linux 上的安裝一樣,我們先建立兩個目錄用來存放 Redis 配置:

/usr/local/redis:存放redis.conf
/usr/local/redis/data :存放持久化文件

建立好兩個目錄後, 我們把 redis.conf 放在 /usr/local/redis 目錄下,使用下麵這條 Docker 命令啟動 Redis 鏡像:

docker run -p 6379:6379 -v /usr/local/redis/redis.conf:/usr/local/etc/redis/redis.conf -v /usr/local/redis/data:/data --name dockerRedis -d redis redis-server /usr/local/etc/redis/redis.conf

這條 docker 啟動命令跟上面的有一點區別,有兩個參數我在這裡說明一下:

到此,Docker 安裝 Redis 的複雜操作也做完了,如果沒什麼特別要求的話,使用簡單的 docker 啟動就好了,簡單方便,完全夠用了。

最後

目前互聯網上很多大佬都有 Redis 系列教程,如有雷同,請多多包涵了。原創不易,碼字不易,還希望大家多多支持。若文中有所錯誤之處,還望提出,謝謝。

歡迎掃碼關註微信公眾號:「平頭哥的技術博文」,和平頭哥一起學習,一起進步。

平頭哥的技術博文


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

-Advertisement-
Play Games
更多相關文章
  • NoSQL指的是非關係型資料庫,是對不同於傳統的關係型資料庫的資料庫管理系統的統稱,NoSQL是web2.0時代海量數據催生的產物 特點 不支持SQL語法 NoSQL的世界中沒有一種通用的語言,每種nosql資料庫都有自己的語法,以及擅長的業務場景 讀寫性能高 NoSQL資料庫都具有非常高的讀寫性能 ...
  • PyMySQL的使用 安裝 sudo pip3 install pymysql 基本使用 from pymysql import connect # 1.創建鏈接 coon = connect() """ * 參數host:連接的mysql主機,如果本機是'localhost' * 參數port:連 ...
  • 上一篇說到Spark的yarn client運行模式,它與yarn cluster模式的主要區別就是前者Driver是運行在客戶端,後者Driver是運行在yarn集群中。yarn client模式一般用在互動式場景中,比如spark shell, spark sql等程式,但是該模式下運行在客戶端 ...
  • 本文主要瞭解了在Linux環境下安裝MySQL後的配置文件的位置,以及如何創建配置文件。 ...
  • 未提交讀:讀尚未提交的數據 已提交讀:讀取已經提交的數據(oracle預設) 可重覆讀:保證同一事務多次讀取同樣記錄的結果一致(MySQL預設) 串列化:每次讀取都獲得表級共用鎖,讀寫相互阻塞 ...
  • https://blog.csdn.net/vivianXuejun/article/details/78809655 https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=20728 ...
  • mssql資料庫的主鍵約束中,主鍵名查詢: 修改主鍵名稱的方法: ...
  • 【關閉集群順序】1.使用crs_stat 命令查詢RAC節點的服務狀態是否正常[grid@ora01sh ~]$ crs_stat -t -v2.使用srvctl (service control)命令依次關閉集群服務關閉順序:關閉資料庫(實例)-->關閉ASM實例-->關閉節點服務1)關閉資料庫[ ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...