详细讲解 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 的安装方式吧。linux

一、Linux 系统下安装 redis

安装

在 redis 官网中有安装教程,连接:https://redis.io/download,安装步骤我拷贝过来了,步骤以下:git

$ 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 可能会报如下错误github

jemalloc/jemalloc.h: No such file or directoryredis

当时没有截取详细的错误信息,只把主要的一段截取出来了,这个错误的缘由是咱们上一次 make 报错以后,有编译后的文件,因此咱们须要清除上一次的残留文件再从新编译,将 make 换成 make distclean && make 就能够了。docker

redis.conf 文件

redis.conf 是 Redis 的配置文件,redis 的全部配置有在这个文件里面,这个文件挺大的有接近 1400 行,有关 redis 的操做、使用说明都在里面,能够详细的阅读阅读这个配置文件,大部分状况下咱们使用默认配置就行,只须要设置少许配置就行。redis.conf 的存放位置在 Redis 的安装目录下,我这里是 /usr/local/redis-5.0.5 目录下,一块儿来看看咱们可能会修改的几个配置:shell

  • 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 的启动命令,执行:vim

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

后面跟的是 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 设置为开机自启动,其实这个也很是简单,咱们只须要作如下四步操做便可。

一、 编写配置脚本 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
二、修改 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
三、修改文件执行权限
chmod +x /etc/init.d/redis
四、设置开机启动
# 启动 redis
service redis start
# 中止 redis
service redis stop
# 开启服务自启动
chkconfig redis on

二、Docker 安装 Redis

Docker 安装 Redis 总体来讲比较方便,我说的是非生产环境,就是本身搭着测试或者学习的环境,下面的步骤所有创建在你已经在你的电脑上安装了 Docker 的基础上,下面就来开启安装之旅。

一、拉取 redis 镜像

docker pull redis

二、快速启动

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 持久化
三、使用 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 系列教程,若有雷同,请多多包涵了。原创不易,码字不易,还但愿你们多多支持。若文中有所错误之处,还望提出,谢谢。

欢迎扫码关注微信公众号:「平头哥的技术博文」,和平头哥一块儿学习,一块儿进步。

平头哥的技术博文

相关文章
相关标签/搜索