Redis启动脚本

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 一、Linux启动脚本原理 1、init和运行级别 以CentOS为例,init有7个运行级别(run level),打开/etc/inittab文件能看到: # Default runlevel.


一、Linux启动脚本原理
1、init和运行级别
以CentOS为例,init有7个运行级别(run level),打开/etc/inittab文件能看到:
# Default runlevel. The runlevels used by RHS are:
# 0 – halt (Do NOT set initdefault to this)
# 1 – Sing user mode
# 2 – Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 – Full multiuser mode
# 4 – unused
# 5 – X11
# 6 – reboot (Do NOT set initdefault to this)
/etc/inittab文件规定了系统进入到每一个运行级别时需要运行的命令,也规定了系统默认运行级别:
id:3:initdefault:
在机器引导时,系统进入默认运行级别,并执行相应级别所需命令。
2、服务启动脚本
/etc/init.d中存放了所有的启动脚本,我们可以通过如下命令来启动某个服务:
#/etc/init.d/iptables start
或者
#service iptables start
以此来启动iptables服务。
虽然/etc/init.d目录中存放了所有启动脚本,但是系统引导时,init并不直接在/etc/init.d目录中查找各个服务的启动脚本,而是在/etc/rc.d目录中查找,该目录中包含了代表不同的init启动级别的子目录即rcx.d目录:

rcx.d目录中存放都是/etc/rc.d/init.d目录中脚本的符号链接,以rc3.d为例:


这些符号链接都以SK开头,随后跟一个数字以及脚本所控制的服务名称,如K05rabbitmq-server,当init从低运行级别向高运行级别切换时,其按照数字递增的顺序运行所有以S开头的脚本,S=start,即启动脚本所控制的服务,按照数字递减的顺序杀死以K开头的脚本,K=kill,即杀死脚本所控制的服务。
脚本启动或者杀死的顺序由数字来控制,当然,我们也可以改变这些:

#ln –s /etc/init.d/rabbitmq-server S70rabbitmq-server
或者
#ln –s /etc/init.d/rabbitmq-server K70rabbitmq-server

二、Redis启动脚本
有了上面那些理论支撑,接下来就亲自操刀编写一个Redis启动脚本。
1
、创建启动脚本

假设服务名称为redis-server,可执行文件路径为/usr/local/bin,配置文件为redis.conf,配置文件路径为/etc,进程ID存放文件为redis.pid,进程ID存放文件路径为/var/run,脚本文件为redisd,脚本文件存放路径为/etc/init.d,服务描述为redis daemon,当然这些信息可以根据自己需要定制,具体脚本如下:
#!/bin/sh

#chkconfig: 345 86 14

#description: Startup and shutdown script for Redis

 

PROGDIR=/usr/local/bin

PROGNAME=redis-server

DAEMON=$PROGDIR/$PROGNAME

CONFIG=/etc/redis.conf

PIDFILE=/var/run/redis.pid

DESC="redis daemon"

SCRIPTNAME=/etc/init.d/redisd

 

start()

{

         if test -x $DAEMON

         then

        echo -e "Starting $DESC: $PROGNAME"

                   if $DAEMON $CONFIG

                   then

                            echo -e "OK"

                   else

                            echo -e "failed"

                   fi

         else

                   echo -e "Couldn't find Redis Server ($DAEMON)"

         fi

}

 

stop()

{

         if test -e $PIDFILE

         then

                   echo -e "Stopping $DESC: $PROGNAME"

                   if kill `cat $PIDFILE`

                   then

                            echo -e "OK"

                   else

                            echo -e "failed"

                   fi

         else

                   echo -e "No Redis Server ($DAEMON) running"

         fi

}

 

restart()

{

    echo -e "Restarting $DESC: $PROGNAME"

    stop

         start

}

 

list()

{

         ps aux | grep $PROGNAME

}

 

case $1 in

         start)

                   start

        ;;

         stop)

        stop

        ;;

         restart)

        restart

        ;;

         list)

        list

        ;;

 

         *)

        echo "Usage: $SCRIPTNAME {start|stop|restart|list}" >&2

        exit 1

        ;;

esac

exit 0

点击img_e25d4fb2f8de1caf41a735ec53088516.pngredisd.rar可以下载完整脚本。
2
、增加服务并开机启动
#!/bin/sh

 

cp ./redisd /etc/rc.d/init.d/redisd

chmod +x /etc/rc.d/init.d/redisd

chkconfig --add redisd

chkconfig --level 345 redisd on

chkconfig --list redisd


点击img_e25d4fb2f8de1caf41a735ec53088516.pngdistrbuteDaemon.rar可以下载完整脚本。


执行该脚本后,就可以开始start|stop|restart|list你的服务了。





相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
5月前
|
存储 NoSQL Redis
Redis的Lua脚本有什么作用?
Redis Lua脚本用于减少网络开销、实现原子操作及扩展指令集。它能合并操作降低网络延迟,保证原子性,替代不支持回滚的事务。通过脚本,代码复用率提高,且可自定义指令,如实现分布式锁,增强Redis功能和灵活性。
184 1
|
4月前
|
消息中间件 NoSQL Java
Redis系列学习文章分享---第六篇(Redis实战篇--Redis分布式锁+实现思路+误删问题+原子性+lua脚本+Redisson功能介绍+可重入锁+WatchDog机制+multiLock)
Redis系列学习文章分享---第六篇(Redis实战篇--Redis分布式锁+实现思路+误删问题+原子性+lua脚本+Redisson功能介绍+可重入锁+WatchDog机制+multiLock)
206 0
|
2月前
|
缓存 监控 NoSQL
【Azure Redis 缓存】使用Python代码获取Azure Redis的监控指标值 (含Powershell脚本方式)
【Azure Redis 缓存】使用Python代码获取Azure Redis的监控指标值 (含Powershell脚本方式)
|
2月前
|
NoSQL Shell Redis
redis一键巡检脚本分享
redis一键巡检脚本分享
21 0
|
2月前
|
存储 人工智能 NoSQL
AI自动化!redis高效部署脚本
AI自动化!redis高效部署脚本
37 0
|
2月前
|
存储 NoSQL Redis
Tair的发展问题之在Redis集群模式下,Lua脚本操作key面临什么问题,如何解决
Tair的发展问题之在Redis集群模式下,Lua脚本操作key面临什么问题,如何解决
|
5月前
|
缓存 NoSQL Java
【Redis】5、Redis 的分布式锁、Lua 脚本保证 Redis 命令的原子性
【Redis】5、Redis 的分布式锁、Lua 脚本保证 Redis 命令的原子性
185 0
|
5月前
|
算法 NoSQL Java
springboot整合redis及lua脚本实现接口限流
springboot整合redis及lua脚本实现接口限流
226 0
|
4月前
|
NoSQL API Redis
使用Redis Lua脚本实现高级限流策略
使用Redis Lua脚本实现高级限流策略
156 0
|
4月前
|
消息中间件 NoSQL Java
Spring Boot中使用Redis和Lua脚本实现延时队列
Spring Boot中使用Redis和Lua脚本实现延时队列
下一篇
无影云桌面