首頁  >  文章  >  資料庫  >  Redis的兩種安裝部署方式(圖文詳解)

Redis的兩種安裝部署方式(圖文詳解)

angryTom
angryTom轉載
2019-11-28 15:24:552344瀏覽

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 的安裝方式。

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

這段指令就是一個坑,壓根就沒有,啟動這條指令,你會得到以下回饋:

Redis的兩種安裝部署方式(圖文詳解)

顯然這條指令是沒有用的,當然這只是我個人認為,也許是我操作失誤,也許是我知識面不夠,如果朋友們發現錯誤還請多多指教,這裡我就先當它是錯誤的,正確的做法是在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 啟動指令跟上面的有一點差別,有兩個參數我在這裡說明一下:

● -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的兩種安裝部署方式(圖文詳解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除