CentOS下redis自启动shell脚本

yizhihongxing

下面是详细讲解 "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日

相关文章

  • SQL ABS 函数

    下面我们来详细讲解SQL ABS函数的完整攻略。 ABS函数概述 ABS函数是SQL语言中的一种数字函数,用于获取指定数字的绝对值。 函数的语法如下: ABS(n) 参数解释: n – 必须。要计算绝对值的数字,可以是数字值、表达式或者是一个 SQL Server 字段。 返回值: ABS函数返回一个数值类型的结果,该结果是参数的绝对值。 ABS函数的使用示…

    database 2023年3月27日
    00
  • dedecms负载性能优化实例,三招让你的dedecms快10倍以上第2/2页

    以下是“dedecms负载性能优化实例,三招让你的dedecms快10倍以上第2/2页”攻略。 1.优化图片 1.1 图片格式和大小 图像格式是影响网页加载速度的一个重要因素。首先,选择合适的图片格式以更快地加载页面。JPEG 和 PNG 是最常用的类型,也是最广泛支持的类型。JPEG 是一个图像压缩标准,它可以大大减小文件大小,并在大多数情况下保持图像质量…

    database 2023年5月19日
    00
  • mysql数据库日志binlog保存时效问题(expire_logs_days)

    MySQL数据库中有一个重要的日志文件类型就是binlog(二进制日志),它记录了MySQL服务器所有的写操作,包括insert、update、delete等操作。但是由于二进制日志的文件会不断增大,占据服务器存储空间,因此我们需要对其进行管理,实现自动清理。 expire_logs_days是MySQL服务器参数之一,用于配置二进制日志文件的保存时间,即指…

    database 2023年5月22日
    00
  • postgresql数据库配置文件postgresql.conf,pg_hba.conf,pg_ident.conf

    PostgreSQL是一款功能强大的关系型数据库,它的配置文件主要有postgresql.conf、pg_hba.conf以及pg_ident.conf三个。其中postgresql.conf是PostgreSQL的主要配置文件,它提供了大量可配置的选项用来控制数据库系统的行为,pg_hba.conf和pg_ident.conf则主要关注在安全性方面。 下面…

    database 2023年5月22日
    00
  • Orancle的SQL语句之多表查询和组函数

    下面就是关于“Oracle的SQL语句之多表查询和组函数”的完整攻略。 多表查询 在实际的业务场景中,我们经常需要从多个表中查询数据,这就要用到多表查询。Oracle中的多表查询主要有三种方式: 内连接:查询两个表中的共同数据,即交集。使用 INNER JOIN 或 JOIN 关键字实现。 左连接:查询第一个表中的所有数据和第二个表中的共同数据,即左表包含所…

    database 2023年5月21日
    00
  • MongoDB 管道的介绍及操作符实例

    MongoDB是一种非关系型数据库,它非常适合用于大规模数据的存储和查询。在MongoDB中,管道(Pipeline)是一种强大的数据处理工具,它可以通过将多个操作符组合起来,为我们提供高效而便捷的数据处理方式。下面将为你详细介绍MongoDB管道的操作符,以及实例操作的演示。 一、管道的介绍 1. 管道的概念 管道是一系列操作符的连接,它们按照指定的顺序依…

    database 2023年5月22日
    00
  • 零基础之Node.js搭建API服务器的详解

    下面是“零基础之Node.js搭建API服务器的详解”的完整攻略: 介绍 本文主要讲解如何使用Node.js搭建一个简单的API服务器,使用的工具有Express和MongoDB,主要内容包括: 安装Node.js和MongoDB 使用Express快速生成项目框架 定义API接口 连接数据库 编写API接口的实现 测试API接口 步骤 1. 安装Node.…

    database 2023年5月22日
    00
  • Linux 管理员手册(3)

    Linux 管理员手册(3) 介绍 Linux管理员手册(3)是Linux操作系统中的一个手册页,包含了许多C库函数的细节信息,如在Linux中常用的system()、fork()、wait()等。在编写shell脚本或开发C/C++程序时,该手册可能会成为不可或缺的参考资料。 如何使用Linux管理员手册(3) 使用Linux管理员手册(3)非常简单,在终…

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