redis启动 加载 指定rdb 启动redis指定配置文件_redis启动 加载 指定rdb


1 Redis简介

1.1 Redis是什么

Redis是一个开源的,使用ANSI C 编写的,高性能Key-Value的NoSQL数据库。

1.2 Redis特点

i. 基于内存。
ii. 可持久化数据。
iii. 具有丰富的数据结构类型,适应非关系型数据的存储需求。
iv. 支持绝大多数主流开发语言,如C、C++、Java、Python、R、JavaScript等。
v. 支持集群模式,高效、稳定。

1.3 数据模型

i. 键值对形式。
ii. Redis的数据结构类型,指的就是Redis值的结构类型,如下:


redis启动 加载 指定rdb 启动redis指定配置文件_redis启动 加载 指定rdb_02


1.4 Redis作用

(1)本质是数据库,能存储数据

非关系型数据的读、写问题,是对MySQL等关系型数据库的补充。新浪微博就是使用Redis集群做数据库。
应用场景:微博、即时通讯、验证码、Token等。

(2)缓存数据

所谓缓存,就是将数据加载到内存中后直接使用,而不是每次都通过IO流从磁盘上读取。好处:读写效率高。
注意:Redis将数据直接存储在内存中,只有当内存空间不足时,将部分数据持久化到磁盘上。

2 Redis安装

2.1 说明

(1)在Linux上安装Redis。
(2)Redis官方只提供了源码,并没有提供经过编译之后的安装包。因此,安装Redis,要先编译、后安装。(即 源码安装方式

2.2 redis安装步骤

第一步:上redis官网下载redis软件压缩包(redis-3.2.9.tar.gz)

第二步:将压缩包上传到/opt/soft

第三步:解压压缩包到/usr/redis(tar -zxvf redis-3.2.9.tar.gz -C /usr/redis)

第四步:预编译redis源码

[4.1]进入redis源码目录(cd /usr/redis/redis-3.2.9/deps/jemalloc)
[4.2]执行预编译脚本(./configure)
[4.3]在预编译过程中,会检测安装redis所需的相关依赖(xsltproc、gcc、cc、cl.exe),使用yum指令依次安装即可。
yum -y install xslproc
yum -y install gcc
yum -y install cc
yum -y install cl.exe
注意:预编译不是必须的步骤,它只是在检查编译过程中需要的环境是否满足。通常源码包中,都有一个可执行的configure脚本,这个脚本就是执行预编译的脚本。但是有一些源码包中,没有该文件,因此可以省略预编译步骤。

第五步:编译,进入/usr/redis/redis-3.2.9/src目录,执行make命令。

第六步:安装,进入/usr/redis/redis-3.2.9/src目录,执行make install命令。

注意:redis的客户端、服务端等可执行命令默认安装在/usr/local/bin目录下。


redis启动 加载 指定rdb 启动redis指定配置文件_Redis_03


第七步:启动redis服务器,因为redis是基于配置文件启动的,所以在启动redis的时候需要指定配置文件,为了方便管理软件的配置文件,建议将配置文件都拷贝到/etc目录下。

拷贝命令:cp /usr/redis/redis-3.2.9/redis.conf /etc/ 启动redis服务命令:/usr/local/bin/redis-server /etc/redis.conf


redis启动 加载 指定rdb 启动redis指定配置文件_redis没有bin目录_04


第八步:启动redis客户端

启动命令:/usr/local/bin/redis-cli


redis启动 加载 指定rdb 启动redis指定配置文件_Redis_05


到这里,redis就安装成功了。

2.3 redis.conf常用配置说明

查看和修改redis.conf配置文件,建议使用WinSCP编辑器打开,方便查找和修改。


配置	                      说明
#requirepass foobared	      设置redis的登录密码
                              注意:[1] requirepass是关键字不能修改,只需去掉#号,
                                        再将foobared修改为需要的密码即为设置密码。
                                    [2] 在客户端使用auth命令,验证密码。

databases 16	              设置redis数据库的个数
                              注意:[1] 默认16个数据库,寻址角标从0开始。默认连接db0。
                                    [2] 客户端使用select命令,切换数据库。

port 637	              指定redis的服务端口,默认6379

daemonize no	              是否设置为守护线程,守护线程默认在后台运行,不会出现任何的提示信息。
                              yes设置为守护线程。

loglevel notice 	      设置reids服务的日志等级(debug、verbose、notice、warning)

logfile “”	              设置redis日志输出目录,默认不输出日志到文件。
                              一般设置了就不再输出日志到控制台,可以使用tail命令,
                              实时输出日志文件内容,已达到实时监控的效果。(tail -f logFilePath)

dbfilename dump.rdb	      指定rdb方式持久化文件名

dir ./	                      指定持久化文件所在目录


更多配置信息可以参考《redis实战》书籍的1.4.2章节,配置redis。

2.4 将redis添加为系统服务

第一步:开启后台模式

修改配置文件,将daemonize改为yes

第二步:创建shell脚本(关键)

在/etc/init.d目录下创建redis脚本,因为linux系统服务都在/etc/init.d目录下,并且开启默认启动该目录下所有的服务(执行脚本文件)。如下:


###########################
#chkconfig: 2345 10 90
#description: Start and Stop redis
PATH=/usr/local/bin:/sbin:/usr/bin:/bin
   
REDISPORT=6379
EXEC=/usr/local/bin/redis-server
REDIS_CLI=/usr/local/bin/redis-cli
##判断redis是否启动了 
PIDFILE=/var/run/redis_6379.pid
CONF="/etc/redis.conf"
PASSWORD=$(cat $CONF|grep '^s*requirepass'|awk '{print $2}'|sed 's/"//g')
   
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
        if [ "$?"="0" ] 
        then
              echo "Redis is running..."
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
if [ -z $PASSWORD ]
then 
    $REDIS_CLI -p $REDISPORT shutdown
else
    $REDIS_CLI -a $PASSWORD -p $REDISPORT shutdown
fi
                #$REDIS_CLI -p $REDISPORT SHUTDOWN
                while [ -x ${PIDFILE} ]
               do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
   restart|force-reload)
        ${0} stop
        ${0} start
        ;;
  *)
    echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
        exit 1
esac
##############################


第三步:添加shell脚本可执行权限

[root@node1 ~] chmod +x /etc/init.d/redis

第四步:添加Redis开机启动

[root@node1 ~] chkconfig redis on

第五步:查看系统服务(确认是否已经设置为系统服务)

[root@node1 ~] chkconfig


redis启动 加载 指定rdb 启动redis指定配置文件_redis没有bin目录_06


第六步:重启系统,直接登录客户端,测试系统服务启动是否成功(确认shell脚本编写是否正确)。


redis启动 加载 指定rdb 启动redis指定配置文件_redis没有bin目录_07


登录成功,到此完成添加redis为系统服务。