一、概述

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 你设置的端口

redis自启动配置详解的更多相关文章

  1. redis.conf 配置详解

    # Redis 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写) # # 1k => 1000 bytes # 1kb = ...

  2. redis.conf 配置详解 (转)

    # Redis 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写)## 1k => 1000 bytes# 1kb => ...

  3. Redis错误配置详解

    在使用Redis做缓存时,应用往往能得到非常高的性能.然而,如果配置不当,你将遇到很多令人头疼的问题,比如复制缓冲区限制.复制超时等. Redis提供了许多提高和维护高效内存数据库使用的工具.在无需额 ...

  4. redis的配置详解

    redis 127.0.0.1:6379> CONFIG GET loglevel 1) "loglevel" 2) "notice" Redis 的配置 ...

  5. redis.conf配置详解(转)

    # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位,# 通常的格式就是 1k 5gb 4m 等酱紫:## 1k => 1000 bytes# 1kb =&g ...

  6. 【Redis学习之二】Redis:redis.conf 配置详解

    参数说明redis.conf 配置项说明如下:1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程  daemonize no2. 当Redis以守护进程方式运行 ...

  7. redis.conf 配置 详解 中文 2.8

        # redis version 2.8.19   # 1k => 1000 bytes# 1kb => 1024 bytes# 1m => 1000000 bytes# 1m ...

  8. redis.conf配置详解

    http://www.2cto.com/database/201307/225113.html

  9. redis配置详解

    ##redis配置详解 # Redis configuration file example. # # Note that in order to read the configuration fil ...

随机推荐

  1. 【244】◀▶IEW-Unit09

    Unit 9 Food 1)Model1题目及范文讲解 In the world today, there is a problem with food production. As a result ...

  2. linux消息队列相关操作

    /* 发送消息队列 */ #include <stdio.h>#include <stdlib.h>#include <string.h>#include < ...

  3. Centos 6.5 下Nginx安装部署https服务器

    一般我们都需要先装pcre, zlib,前者为了重写rewrite,后者为了gzip压缩.1.选定源码目录选定目录 /usr/local/cd /usr/local/2.安装PCRE库cd /usr/ ...

  4. ASP.NET Core MVC 视图

    ASP.NET Core MVC中视图的知识和ASP.NET MVC有很多相似之处,学习难度较低.以下内容主要体现了编程中模块化的思想,模块化才应是我们关注的重点. Layout 布局用于提供各个页面 ...

  5. 跟我学: 使用 fireasy 搭建 asp.net core 项目系列之一 —— 开篇

    ==== 目录 ==== 跟我学: 使用 fireasy 搭建 asp.net core 项目系列之一 —— 开篇 跟我学: 使用 fireasy 搭建 asp.net core 项目系列之二 —— ...

  6. js基础(创建标签)

    创建标签 var divBox1 = document.getElementById('box1'); var p = document.createElement('p'); p.innerHTML ...

  7. bzoj4889: [Tjoi2017]不勤劳的图书管理员(树套树)

    传送门 据说正解线段树套平衡树 然而网上参考(抄)了一个树状数组套动态开点线段树的 思路比较清楚,看代码应该就明白了 //minamoto #include<iostream> #incl ...

  8. 【TIDB】4、业界使用情况

    一.小米 1.背景 小米关系型存储数据库首选 MySQL,单机 2.6T 磁盘.由于小米手机销量的快速上升和 MIUI 负一屏用户量的快速增加,导致负一屏快递业务数据的数据量增长非常快, 每天的读写量 ...

  9. C 语言实例 - 判断正数/负数

    C 语言实例 - 判断正数/负数 用户输入一个数字,判断该数字是正数还是负数或是零. 实例 #include <stdio.h> int main() { double number; p ...

  10. mysql5.6数据库同步,单向双向同步问题

    windows下MySQL5.6实现主从数据库同步数据   mysql5.6数据库同步,单向双向同步问题 一.单向同步 主数据库(mysql5.6)192.168.1.104 从数据库(mysql5. ...