1. 程式人生 > >詳細講解 Redis 的兩種安裝部署方式

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

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 logo 的啟動介面,我們可以使用 shell 命令登入到 Redis 中,還是在 src 目錄下面,執行下面這條命令:

./redis-cli

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

redis 關閉

Redis 的關閉方式有兩種,一種是在 shell 互動介面關閉,另一種是 kill + 程序號關閉 Redis 例項的方式

shell 互動介面關閉

shutdown [nosave|save]

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

Kill + 程序號關閉 Redis 例項

使用 ps -ef|grep 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 ,整體來說比 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 命令,如下圖所示:

這樣我們就進入到了真正的虛擬機器裡面,我們就在一臺虛擬機器上操作了,跟我們在 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 啟動命令跟上面的有一點區別,有兩個引數我在這裡說明一下:

  • -v /usr/local/redis/redis.conf:/usr/local/etc/redis/redis.conf:這引數是將 /usr/local/redis/redis.conf 複製到 /usr/local/etc/redis/redis.conf 下
  • -v /usr/local/redis/data:/data:容器內持久化檔案的存放位置也會對映到宿主機,換句話說在 /usr/local/redis/data 也會存放持久化檔案

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

最後

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

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

相關推薦

詳細講解 Redis安裝部署方式

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

Idea環境實現SpringBoot實現部署方式(親測有效)

即將介紹的兩種熱部署方式:   1.SpringLoaded   2.DevTools 區別:   SpringLoader:SpringLoader 在部署專案時使用的是熱部署的方式。  DevTools:DevTools 在部署專案時使用的是重新部署的方式 SpringBoot版本:2.1.9-RELE

ubuntu 安裝redis方式 教程

方式一: 下載地址:http://redis.io/download,下載最新文件版本。 本教程使用的最新文件版本為 2.8.17,下載並安裝: $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz $ tar xzf

Linux 下Redis叢集安裝部署及使用詳解(線上和離線安裝+相關錯誤解決方案)

一、應用場景介紹   本文主要是介紹Redis叢集在Linux環境下的安裝講解,其中主要包括在聯網的Linux環境和離線的Linux環境下是如何安裝的。因為大多數時候,公司的生產環境是在內網環境下,無外網,伺服器處於離線狀態(最近公司要上線專案,就是無外網環境的Linux,被離線安裝坑慘了,走了很多彎路,說多

ubuntu 安裝redis方式

本教程使用的最新文件版本為 2.8.17,下載並安裝: $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz $ tar xzf redis-2.8.17.tar.gz $ cd redis-2.8.17

zabbix agent 的安裝方式

(一)zabbix-agent介紹和工作原理 1 介紹     zabbix([`zæbiks])是一個基於WEB介面的提供分散式系統監視以及網路監視功能的企業級的開源解決方案。     zabbix能監視各種網路引數,保證伺服器系統的安全運營;並

Redisredis備份方式

Redis提供了兩種持久化選項,分別是RDB和AOF。 預設情況下60秒重新整理到disk一次[save 60 10000 當有1w條keys資料被改變時],Redis的資料集儲存在叫dump.rdb一個二進位制檔案,這種策略被稱為快照。 也可以手動呼叫Save或BGSA

redis,mysql,memcache的區別與比較,redis資料儲存持久化方式

redis與mysql比較 區別:mysql中一箇中小型的網路資料庫,比oracle和sqlserver小, 但是併發能力遠超過acess這樣的桌面資料庫;redis是一個記憶體鍵值資料庫,支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫

Jenkins+CentOS6.5 的安裝方式

最近老大要求準備使用Jenkins搭建持續整合環境,因此我這邊開始了搭建Jenkins環境搭建之旅,這裡講解的是兩種搭建方式,網上均有一定介紹,本文章只講述如何搭建安裝 一、環境準備: 1、CentOS 6.5 完整版安裝,安裝完成後開啟SSH服務: [[email

solr的安裝方式

The Solr ZooKeeper host and port. It is recommended to provide a sub-folder to create the Ranger Audit related configurations so you can also use ZooKeepe

redis實戰--redis持久化方式

前言: 說到redis的持久化,大家可能就想到了RDB和AOF兩種方式; 下面就這兩種方案的意義以及兩種持久化方案的工作原理。 持久化的意義 redis的持久化意義在於故障恢復,資料恢復。 如果redis伺服器掛了,遇到了災難性的故障,redis

Eclipse外掛的安裝方式

1. 壓縮包內只包含features和plugins 如果你的外掛壓縮包中,只包含了features和plugins兩個目錄(有可能還會帶有site.xml檔案),那麼只需要將它解壓後,複製到ecl

redis連接方式

root用戶 存在 number base 配置 bash 更改 拷貝 title 安裝 tar zxvf redis-2.8.9.tar.gz cd redis-2.8.9 #直接make 編譯 make #可使用root用戶執行`make install`,將可執行文件

圖的遍歷方式

繼續 div input traversal 遍歷 n) logs i++ memset 圖的遍歷有兩種:深度優先和廣度優先。本文中,深度優先使用遞歸實現,每次遞歸找到第一個與當前結點相連且未輸出過的結點繼續往下遞歸,直至所有結點都已輸出。廣度優先將開始結點的所有鄰接結點全

Shiro源代碼分析之Session的方式

amp msg cto 開源 request cannot pad turn ssa 1、Shiro默認的Session處理方式 <!-- 定義 Shiro 主要業務對象 --> <bean id="s

Android學習筆記(36):Android的事件處理方式

post gravity cal log 基於 處理方法 hang mil 重寫 Android提供了兩種事件處理的方式:基於回調的事件處理 和 基於監聽的事件處理。 我們來說的easy理解一點: (1)基於回調的事件處理就是繼承GUI組件,並重寫該組件的

華為telnet的連接方式

telnet要求R2能遠程登陸上R1(使用password)方式第一種方式:[R1][R1]int e0/0/0[R1-Ethernet0/0/0]ip address 12.1.1.1 24[R1]user-interface vty 0 4[R1-ui-vty0-4]authentication-mode

html5中的Web Storage包括了存儲方式:sessionStorage和localStorage。

htm local 本地 存儲方式 刪除數據 tor web 兩種 session html5中的Web Storage包括了兩種存儲方式:sessionStorage和localStorage。 sessionStorage用於本地存儲一個會話(session)中的數據,

redis以及php的redis擴展安裝部署

redis php 一.redis 安裝部署:tar xf redis-3.2.8.tar.gzcd redis-3.2.8make MANIFESTO=jemallocmake PREFIX=/usr/local/redis-3.2.8 installln -s /usr/local/redis-3

Kaldi語料的切分/組織方式及其處理

out pad ati bottle pri 特征提取 文件的 code val text中每一個文本段由一個音頻索引(indexed by utterance) 使用該方式的egs:librispeech、timit、thchs30、atc_en、atc_cn 語料