CentOS下redis自启动shell脚本

下面是详细讲解 "CentOS下redis自启动shell脚本" 的完整攻略:

1. 编写redis自启动脚本

在 CentOS 系统下,使用 systemd 来管理系统服务。因此,我们可以编写一个 systemd 的 service 脚本来实现 redis 的自启动。

编辑服务脚本:

sudo nano /etc/systemd/system/redis.service

填入下面的内容:

[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always

[Install]
WantedBy=multi-user.target

在这个脚本中,我们定义了一个名为 "redis" 的 service。其中:

  • Description:服务的描述信息;
  • After:指定在哪些服务之后启动,在这里我们指定了 network.target,即系统自带的网络服务后启动;
  • User / Group:指定运行该服务的用户和用户组,为了安全起见,我们要创建一个新的用户和用户组,并将其授权给 /usr/local/redis 目录,这样该用户才能成功启动 redis-server;
  • ExecStart:指定服务启动时要执行的命令,即启动 redis-server;
  • ExecStop:指定停止服务时执行的命令,即执行 redis-cli shutdown,这样能够优雅地关闭 redis 服务;
  • Restart:服务意外停止时,自动重启服务;
  • WantedBy:指定运行级别,在这里指定为 "multi-user.target",意味着在系统启动时运行该服务。

保存文件并退出。

2. 启动服务

为了让新创建的 systemd service 生效,我们需要使用以下命令重新加载 systemd 系统:

sudo systemctl daemon-reload

启动 redis 服务:

sudo systemctl start redis.service

检查服务状态:

sudo systemctl status redis.service

输出应如下:

● redis.service - Redis In-Memory Data Store
   Loaded: loaded (/etc/systemd/system/redis.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2021-06-26 17:37:02 UTC; 9s ago
 Main PID: 12345 (redis-server)
    Tasks: 4 (limit: 2357)
   Memory: 4.6M
   CGroup: /system.slice/redis.service
           ├─12345 /usr/local/bin/redis-server *:6379
           ├─12347 /usr/local/bin/redis-server *:6379
           ├─12348 /usr/local/bin/redis-server *:6379
           └─12349 /usr/local/bin/redis-server *:6379

我们可以看到 redis 服务已经启动并运行。

3. 设置自启动

为了使 redis 服务在系统启动时自动启动,我们使用以下命令:

sudo systemctl enable redis.service

现在,当我们重启系统时,redis 服务会自动启动。

示例1:运行多个redis实例

如果需要在同一台服务器上运行多个 redis 实例,需要修改服务脚本中的一些设定。

以下是一个简单的示例:

编写配置文件

首先,我们需要复制一份默认的 Redis 配置文件 /etc/redis/redis.conf:

sudo cp /etc/redis/redis.conf /etc/redis/redis_6381.conf
sudo cp /etc/redis/redis.conf /etc/redis/redis_6382.conf

接着,我们需要修改这两份配置文件。在第一份配置文件中搜索"6379"并全部替换为"6381",在第二份配置文件中搜索"6379"并全部替换为"6382"。

新建自启动服务脚本

sudo nano /etc/systemd/system/redis_6381.service

编辑服务脚本:

[Unit]
Description=Redis 6381
After=network.target

[Service]
PIDFile=/var/run/redis_6381.pid
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis_6381.conf
ExecStop=/usr/local/bin/redis-cli -p 6381 shutdown
Restart=always

[Install]
WantedBy=multi-user.target

其中:

  • Description:服务的描述信息;
  • After:指定在哪些服务之后启动,在这里我们指定了 network.target,即系统自带的网络服务后启动;
  • PIDFile:指定 Redis 进程 ID 文件路径,虽然不是必须的,但是我们为了管理方便,指定该参数可以帮助我们监控 Redis 实例的启动和停止;
  • User / Group:指定运行该服务的用户和用户组;
  • ExecStart:指定服务启动时要执行的命令,即启动 redis-server;
  • ExecStop:指定停止服务时执行的命令,即执行 redis-cli shutdown;
  • Restart:服务意外停止时,自动重启服务;
  • WantedBy:指定运行级别,在这里指定为 "multi-user.target"。

保存文件并退出。

同理,可以创建 redis_6382.service。

启动服务及设置自启动

sudo systemctl daemon-reload
sudo systemctl start redis_6381.service
sudo systemctl start redis_6382.service
sudo systemctl status redis_6381.service
sudo systemctl status redis_6382.service
sudo systemctl enable redis_6381.service
sudo systemctl enable redis_6382.service

示例2:设置redis的持久化

Redis 默认情况下不会持久化任何数据。如果重启服务器,Redis 将丢失所有数据,这可能是不能接受的。以下是如何设置 Redis 持久化的示例。

在 /etc/redis/redis.conf 文件中找到以下两行:

save 900 1
save 300 10

将前缀 "save" 更改为 "snapshot":

#save 900 1
#save 300 10
snapshot 900 1
snapshot 300 10

在同一文件中搜索 "appendonly no" 并将其更改为 "appendonly yes":

# appendonly no
appendonly yes

在同一文件中搜索 "dir" 并确认其值为 /var/lib/redis:

dir /var/lib/redis

保存文件并退出。

结论

经过以上步骤,Redis 服务将会在每次系统启动时自动启动,并在 Redis 容器意外停止时自动重新启动。附带的两个示例可以轻松地启动多个 Redis 实例和设置 Redis 持久化。 在访问 Redis 时,请注意防火墙规则。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CentOS下redis自启动shell脚本 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • 查看 MySQL 已经运行多长时间的方法

    要查看MySQL服务器已经运行多长时间了,有多种方法可以实现,下面我将向你详细讲解这些方法: 方法一:使用系统命令 我们可以使用系统命令“ps -ef | grep mysql”来查找MySQL服务进程,并查看进程运行的时间。具体步骤如下: 打开终端,输入以下命令,查找MySQL服务进程: $ ps -ef | grep mysql 查看MySQL服务进程的…

    database 2023年5月22日
    00
  • Spring Boot无缝集成MongoDB

    一、什么是Spring Boot和MongoDB? Spring Boot是一个基于Spring框架的快速开发极简化的框架,可以快速开发应用程序。 MongoDB是一个新型的文档型数据库,名字起源于humongous(巨大的)。MongoDB具有高性能、易于扩展、开源等特点,在大数据和云计算领域得到了广泛应用。 二、Spring Boot集成MongoDB的…

    database 2023年5月22日
    00
  • PHP消息队列实现及应用详解【队列处理订单系统和配送系统】

    关于PHP消息队列的实现及应用,我将按照如下步骤进行详细地讲解: 什么是消息队列 消息队列(Message Queue)是一种用于在多个应用程序之间传递数据的协议。它在应用程序之间提供异步数据流,避免了应用程序之间直接进行通信和阻塞。 在消息队列中,消息生产者将消息发送到队列中,消息消费者从队列中取出消息并消费。队列的作用在于解耦消息生产者和消费者的关系,从…

    database 2023年5月22日
    00
  • mongodb如何对文档内数组进行过滤的方法步骤

    下面是mongodb如何对文档内数组进行过滤的方法步骤的完整攻略。 1. 使用 $elemMatch $elemMatch运算符可以在一个文档的数组字段中查询和过滤嵌套的对象。具体步骤如下: 在查询条件中使用$elemMatch运算符,示例如下: db.collection.find({arrayField:{$elemMatch:{field1:value…

    database 2023年5月22日
    00
  • Redis为什么这么快以及持久化机制

      1、首先我们谈一下为什么Redis快:       一、 Redis是纯内存数据库,一般都是简单的存取操作,线程占用的时间很多,时间的花费主要集中在IO上,所以读取速度快。      二、 再说一下IO,Redis使用的是非阻塞IO,IO多路复用,使用了单线程来轮询描述符,将数据库的开、关、读、写都转换成了事件,减少了线程切换时上下文的切  换和竞争。 …

    Redis 2023年4月13日
    00
  • SQL Server重温 事务

    SQL Server重温 事务 什么是事务? 在SQL Server中,事务是由一个或多个数据操作语言(DML)语句组成的逻辑工作单元。事务的目的是通过保证一组操作原子性来维护数据的一致性。 ACID属性 事务具有以下四个属性(ACID): 原子性(Atomicity):事务被视为单个逻辑工作单元,要么所有操作都成功,要么所有操作都失败。 一致性(Consi…

    database 2023年5月21日
    00
  • 安装新版redis4.0.6

    看看新版本有那些特性提升,测试用!先安装 网址:https://redis.io/download 获取:wget http://download.redis.io/releases/redis-4.0.6.tar.gz 解压:tar xzvf redis-4.0.6.tar.gz 从软件目录移动目录 mv redis-4.0.6 /usr/local/ c…

    Redis 2023年4月12日
    00
  • 解决pageHelper分页失效以及如何配置问题

    当我们在使用PageHelper进行分页操作的时候,经常会遇到一些分页失效的问题,这主要是由于配置不当或者使用不当所引起的。在本篇攻略中,我将介绍如何解决PageHelper分页失效问题以及如何配置PageHelper。 解决PageHelper分页失效问题的方法 方法一:检查是否正确使用分页插件 如果分页失效了,第一个要检查的就是是否正确使用pageHel…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部