• redis自启动配置详解


     

    一、概述

    1.1原理

    redis自启动的工作原理是怎么样的呢?Linux系统启动后,会有一个程序去特定目录下面扫描文件,然后执行这些文件,这些文件可称之为脚本。所以,你可以把你的工作写成一个脚本,放到指定路径下(etc/init.d)。所以,你要做的,就是把执行启动redis实例的工作编写成脚本,让Linux系统去给你执行即可。

    1.2简述

    配置自启动,大概需要三个步骤

    1. 编辑实例对应的配置文件,同一台机器上,可以有启动多个redis实例,所以对应着多个配置文件。同时每个实例有自己的工作路径,如果共用工作路径,那么配置文件很多项目项要配置成不同,以免冲突,所以建议方法可以设置不同的工作路径。

    2.编辑一个自启动脚本,然后把脚本复制到etc/init.d目录下。因为Linux系统启动后,会有一个程序自动去扫描这个路径下的文件,然后执行它们。

    3.执行命令生效、测试。

    二、编辑redis配置文件

    2.1配置文件命名

    在redis目录下有一个redis.conf文件,复制一份,建议按端口名命名,如6379.conf,规则是,首先,需要与第三章中的脚本里面的配置一致,其次,不同实例对应不同的配置文件,不能搞混了,然后用vi对文件进行编辑。

    2.2编辑配置文件

    以下把需要注意的项加以说明

    首先把redis配置成值守进程,这样redis运行后将在后台运行,如下:
    daemonize yes
    
    
    当以值守进程模式运行的时候,redis sever把自己的pid写入到缺省文件“/var/run/redis.pid”下,这里,你需要自定义文件名,几个redis实例,不能弄成一样,Linux系统是通过这个文件来判断一个进程是否运行与关闭,如下:
    pidfile /var/run/redis_6379.pid
     
    Redis实例用于接收客户端连接的TCP监听端口默认是6379,如果配置成0,将不会开启TCP监听服务。在此可自定义端口,此端口与后续的脚本配置的相关项需要一致。
    port 6379
     
    Redis server缺省情况下是接收所有本服务器所有网卡的请求,但是也可以通过指定IP来绑定网卡,可以绑定多个,用空格隔开,如下:
    bind 192.168.1.100 10.0.0.1
    bind 127.0.0.1
     
    存放快照文件的文件名,默认是dump.rdb,可以自定义文件名,扩展名你就别动它了。如果你需要启动多个redis实例,同时多个实例又共用同一个工作路径,那么此文件名必须不一样。
    dbfilename dump.rdb
    
    

    以上(第4节)只是设置的文件名,而非路径,通过命令dir可以指定路径,文件将按指定路径与指定的文件名存储。同时AOF(Append Only File)也是参照此路径的。多实例可以共用此路径,如果共用工作路径,那其他配置需要配置成不同,以防冲突,所以建议设置成不同工作路径,这样就避免了这些问题。

    dir ./
    指定输入日志信息的文件,如果为空,将从标准输出窗口输出,同时又设置了守护进程模式的话,将会把日志记录到/dev/null。它只是文件名,不包含路径。
    logfile ""

    三、处理脚本

    3.1复制脚本

    redis/utils目录下有一个redis_init_script文件,把它复制一份到etc/init.d路径下,建议把文件名改成与redis实例端口相关,如6379端口的这个脚本名,在etc/init.d路径下改成6379redisd。

    3.2编辑脚本

    对2.1节复制到/etc/init.d路径下的脚本进行编辑,如下:

    #!/bin/sh
    #
    # Simple Redis init.d script conceived to work on Linux systems
    # as it does use of the /proc filesystem.


    # chkconfig:   2345 90 10
    # description:  Redis is a persistent key-value database


    REDISIP=localhost
    REDISPORT=31001
    EXEC=/usr/local/bin/redis-server
    CLIEXEC=/usr/local/bin/redis-cli


    PIDFILE=/var/run/redis_${REDISPORT}.pid
    CONF="/etc/redis/${REDISPORT}.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 -h $REDISIP -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

    下面对以上脚本进行说明

    REDISPORT=6379

    这应该只是定义的一个变量,现在装用到它,建议redis实例用什么端口,这个地方就配置什么端口,如果一个服务器多实例的话,这必须配置成不一样。

    EXEC=/usr/local/bin/redis-server

    你的redis-server的路径,如果你redis源码编译后执行过make install并成功后,redis-server在/usr/local/bin/路径下将会有redis-server的链接,或者,以后配置需要直接配置成你redis-server所在的真实的路径。

    CLIEXEC=/usr/local/bin/redis-cli

    redis-cli所在的路径,由redis-server一样,如果你redis源码编译后执行过make install并成功后,redis-cli在/usr/local/bin/路径下将会有redis-cli的链接,或者,以后配置需要直接配置成你redis-cli所在的真实的路径。这样,在linux下可直接敲redis-cli命令,而不用指定路径了,可以把它当成平常的命令来执行。

    PIDFILE=/var/run/redis_${REDISPORT}.pid

    这个是pid文件路径,当redis实例设置成值守模式(daemonize)后,启动后会生成一个pid文件,在哪里生成,文件名是什么,需要在redis的config文件里配置。所以当你一个服务器中有多个redis实例时,这个文件名需要不一样,不然会带来麻烦。所以此配置项要与redis的配置文件里面配置项一致,关于redis配置文件里面的相关想,参见后续章节。

     

    CONF="/usr/local/src/redis/${REDISPORT}.conf"

    指定redis实例的配置文件的路径,同服务器不同的redis实例需要不同的配置文件,这个需要注意,不能弄成一样的,不然启动会有成功的。

    脚本的后续部分,可以不用管它,不需要修改。

    添加项:

    # chkconfig:   2345 90 10

    # description:  Redis is a persistent key-value database

    在脚本的开头第四行,即“# as it does use of the /proc filesystem.”的一行插入以上两段代码,不然,后面执行命令的时候,会提示权限问题。

    四、启动生效

    #设置为开机自启动服务器(redisd为/etc/init.d/目录下刚才自己建立的脚本名称,下同)

    chkconfig redisd on

    #打开服务,用于测试服务是否有效

    service redisd start

    #关闭服务

    service redisd stop

    #重启系统,测试是否生效

    reboot

    系统重启后,检查redis实例是否如预期启动

    redis-cli –h 你设置的IP –p 你设置的端口

  • 相关阅读:
    Python爬虫开源项目代码,爬取微信、淘宝、豆瓣、知乎、新浪微博、QQ、去哪网等 代码整理
    python ---split()函数讲解
    常见的操作系统及linux发展史
    第五次作业
    第四次软件工程作业
    软件工程——第三次作业
    软件工程--第二次作业
    软件工程--第一次作业
    在SQL Server中调用.NET程序集
    c#中使用ABCpdf处理PDF,so easy
  • 原文地址:https://www.cnblogs.com/MingoJiang/p/8682013.html
Copyright © 2020-2023  润新知