【Redis 速通】Redis 在 Linux 上的单机服务快速搭建与部署(附完整流程步骤及命令代码)

Redis 单机版安装与部署

Written By: Xinyao Tian

概述

本文档主要描述了 Redis 的生产环境安装及配置方法。

主要步骤

编译及安装

进入 root 用户并上传 Redis 源码安装包

查看 Redis 源码安装包的上传情况:

[root@centos-host redis]# pwd
/opt/redis
[root@ centos-host redis]# ls -l | grep tar
-rw-r--r-- 1 root root 3384618 Oct 26 11:24 redis-7.2.2.tar.gz
安装编译器

由于我们选择从源码安装 Redis 故需要编译器的配合:

sudo yum install gcc-c++  # 使用sudo yum install gcc-c++时会自动安装/升级gcc及其他依赖的包
解压并运行编译

解压 tar 文件并进入解压后的目录

[root@centos-host redis-7.2.2]# pwd
/opt/redis/redis-7.2.2
[root@centos-host redis-7.2.2]# ls 
00-RELEASENOTES     CONTRIBUTING.md  INSTALL    README.md   runtest-cluster    SECURITY.md    tests
BUGS                COPYING          Makefile   redis.conf  runtest-moduleapi  sentinel.conf  TLS.md
CODE_OF_CONDUCT.md  deps             MANIFESTO  runtest     runtest-sentinel   src            utils

在该路径内,使用 make MALLOC=libcmake install 命令从源代码编译并安装。

make MALLOC=libc
make install

直接使用 make 命令执行编译会遭遇报错,故需要使用如下命令进行编译。

其原因请见 该博客

确认安装情况

待安装完毕后,检视默认安装路径 /usr/local/bin 可以发现已经存在 Redis 相关的命令。

[root@centos-host redis-7.2.2]# ls -l /usr/local/bin | grep redis
-rwxr-xr-x 1 root root 1073312 Oct 26 13:38 redis-benchmark
lrwxrwxrwx 1 root root      12 Oct 26 13:38 redis-check-aof -> redis-server
lrwxrwxrwx 1 root root      12 Oct 26 13:38 redis-check-rdb -> redis-server
-rwxr-xr-x 1 root root 1790760 Oct 26 13:38 redis-cli
lrwxrwxrwx 1 root root      12 Oct 26 13:38 redis-sentinel -> redis-server
-rwxr-xr-x 1 root root 9437552 Oct 26 13:38 redis-server

创建路径及修改配置

该部分详见 Redis 官方安装文档

确定 Redis 的监听端口

监听端口在后续配置中十分重要,故需要在配置其他事项前先行确定。

此处,我们使用 Redis 的默认端口 6379

创建 Redis 相关路径

使用如下命令创建 Redis 相关的配置文件目录与数据目录:

mkdir /data/redis/etc/redis
mkdir /data/redis/var/redis
mkdir /data/redis/var/run
mkdir /data/redis/var/log
mkdir /data/redis/var/6379
touch /data/redis/var/log/redis_6379.log
复制 Redis 启动文件至 /etc/init.d 并重命名

在 Redis 成功安装完毕后,其安装路径中会出现 util/ 目录。复制其中的 redis_init_script 文件至 /etc/init.d 并重命名。
如下所示:

[root@centos-host redis-7.2.2]# pwd
/opt/redis/redis-7.2.2
[root@centos-host redis-7.2.2]# sudo cp utils/redis_init_script /etc/init.d/redis_6379

修改启动文件内的部分配置项。主要修改其中的 REDISPORT, PIDFILECONF 配置项内容。

修改完毕后的配置文件内容如下所示:

#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.### BEGIN INIT INFO
# Provides:     redis_6379
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Redis data structure server
# Description:          Redis data structure server. See https://redis.io
### END INIT INFOREDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli# PIDFILE=/var/run/redis_${REDISPORT}.pid
PIDFILE=/data/redis/var/run/redis_${REDISPORT}.pid
# CONF="/etc/redis/${REDISPORT}.conf"
CONF="/data/redis/etc/redis/${REDISPORT}.conf"case "$1" instart)if [ -f $PIDFILE ]thenecho "$PIDFILE exists, process is already running or crashed"elseecho "Starting Redis server..."$EXEC $CONF
复制 Redis 启动文件至相应目录并启动

再次进入 Redis 安装目录,并复制配置文件至相应路径:

[root@centos-host redis-7.2.2]# pwd
/opt/redis/redis-7.2.2
[root@centos-host redis-7.2.2]# sudo cp redis.conf /data/redis/etc/redis/6379.conf

修改配置文件中的配置项 vim /data/redis/etc/redis/6379.conf:

# ...# 取消 IP 限制 
bind * -::*# 以守护进程的方式启动 Redis
daemonize yes# 服务端口
port 6379# PIDFILE 存储位置,用于记录 Daemon 进程号
pidfile /data/redis/var/run/redis_6379.pid# 日志文件位置
logfile "/data/redis/var/log/redis_6379.log"# 日志文件级别
loglevel notice# Redis 运行时的文件存放位置
# dir ./
dir /data/redis/var/redis/6379# ...
以进程的方式启动 Redis

使用如下命令启动 Redis: sudo /etc/init.d/redis_6379 start

[root@centos-host redis]# sudo /etc/init.d/redis_6379 start
Starting Redis server...

查看进程的运行情况:

[root@centos-host redis]# ps -ef | grep redis
root     170247 162267  0 13:45 pts/0    00:00:00 su - redisuser
redisus+ 170248 170247  0 13:45 pts/0    00:00:00 -bash
root     171354 171179  0 13:49 pts/1    00:00:00 su - redisuser
redisus+ 171355 171354  0 13:49 pts/1    00:00:00 -bash
root     198536      1  0 15:31 ?        00:00:00 /usr/local/bin/redis-server *:6379
root     199166 174495  0 15:33 pts/0    00:00:00 grep --color=auto redis
检测安装情况

使用 redis-cli ping 命令查看 Redis 服务是否已经被拉起:

[redisuser@centos-host ~]$ redis-cli ping
PONG

使用 redis-cli 命令执行一次 save

[redisuser@centos-host ~]$ redis-cli save
OK

查看数据文件是否有 dump 文件被创建:

[root@centos-host redis]# ls -l /data/redis/var/redis/6379/dump.rdb 
-rw-r--r-- 1 root root 88 Oct 26 15:34 /data/redis/var/redis/6379/dump.rdb

查看日志文件是否被正确创建:

[redisuser@centos-host ~]$ ls -l /data/redis/var/log/redis_6379.log
-rw-r--r-- 1 root root 3782 Oct 26 15:34 /data/redis/var/log/redis_6379.log

创建 Redis 相关 Linux 用户

创建用户

创建 uid 为 5052 的 redisuser 用户并设置其用户密码为 123456

useradd -u 5002 redisuser
passwd redisuser

赋予新创建的 redisuser 用户 sudo 权限 vim /etc/sudoers

# ...
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
redisuser ALL=(ALL) ALL
# ...
更改路径权限

更改 Redis 相关的路径权限:

[root@centos-host redis]# chown -R redisuser:redisuser /data/redis/
创建命令别名

使用 redisuser 用户编辑其配置文件 vim ~/.bash_profile

export REDIS_ETC_DIR=/data/redis/etc/
export REDIS_VAR_DIR=/data/redis/var/alias redis-start="/etc/init.d/redis_6379 start"
alias redis-stop="/etc/init.d/redis_6379 stop"

加载配置文件 source ~/.bash_profile

ln -s  /data/redis/etc/ ~/redis-etc
ln -s  /data/redis/var/ ~/redis-var

附加:给 Redis 默认用户 default 添加密码

修改配置文件中的配置项 vim /data/redis/etc/redis/6379.conf:

# 添加密码
requirepass da28as07

References

  • Redis - Install Redis more properly
  • CSDN - 异常解决: configure: error: no acceptable C compiler found in $PATH
  • Redis - Install Redis from Source
  • CSDN - 编译redis的时候出现zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory问题的解决办法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/131955.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023.11.6-分析 Gateway 和 VirtualService

2023.11.6-分析 Gateway 和 VirtualService 目录 本节实战 实战名称 正文 前面我们创建了一个 Gateway 和 VirtualService 对象,用来对外暴露应用,然后我们就可以通过 ingressgateway 来访问 Bookinfo 应用了。那么这两个资源对象是如何实现的呢&…

【0基础学Java第七课】-- 类和对象01

7. 类和对象 7.1 面向对象的初步认知7.1.1 什么是面向对象7.1.2 面向对象与面向过程 7.2 类定义和使用7.2.1 简单认识类7.2.2 类的定义格式7.2.3 定义一个狗类7.2.4 定义一个学生类 7.3 类的实例化7.3.1 什么是实列化7.3.2 引用只能指向对象,且不能同时指向多个对象…

数据库基础面试——索引

1.索引了解吗?简单介绍一下 索引是一种用于快速查询和检索数据的数据结构。 索引的作用 数据库中数据存储在磁盘,磁盘的顺序查询速度是很慢的,所以的顺序查找指的是读取磁盘中的数据⼀条⼀条的进⾏查找。索引就是为了避免顺序查询&#xf…

运动重定向:TeachNet

Vision-based Teleoperation of Shadow Dexterous Hand using End-to-End Deep Neural Network解析 摘要1. 简介2. Related Work2.1 基于视觉的无标记远程操作2.2 基于深度的3D手部姿势估计2.3 远程操作中的主从配对2.4 遥操作映射方法 3. 师生网络Joint angle lossConsistency…

Python基础入门例程43-NP43 判断布尔值(条件语句)

最近的博文: Python基础入门例程42-NP42 公式计算器(运算符)-CSDN博客 Python基础入门例程41-NP41 二进制位运算(运算符)-CSDN博客 Python基础入门例程40-NP40 俱乐部的成员(运算符)-CSDN博客…

springboot 连接西门子plc,读取对应的值,并修改到数据库

springboot 连接西门子plc,读取对应的值,并修改到数据库 需求:服务器连接plc,读取数据,之后写入到数据库,但是要求速度很快,而且plc中命令对应的值是不断变化的,这个变化&#xff0c…

Android Framework学习之Activity启动原理

Android Activity启动原理 Android 13.0 Activity启动原理逻辑流程图如下:

每天五分钟计算机视觉:搭建手写字体识别的卷积神经网络

本文重点 我们学习了卷积神经网络中的卷积层和池化层,这二者都是卷积神经网络中不可缺少的元素,本例中我们将搭建一个卷积神经网络完成手写字体识别。 卷积和池化的直观体现 手写字体识别 手写字体的图片大小是32*32*3的,它是一张 RGB 模式的图片,现在我们想识别它是从 …

Kubernetes rancher、prometheus、ELK的安装

目录 一、rancher的安装1. 添加 Helm Chart 仓库2. 为 Rancher 创建命名空间3. 选择 SSL 配置4. 安装 cert-manager 二、prometheus安装三、EFK安装 一、rancher的安装 有关rancher的安装其实官方网站给的步骤已经很详细了,可以直接按照步骤安装即可。 1. 添加 He…

【快速解决】Android Studio ERROR: Read timed out

目录 前言 回顾我查到过的解决方案(这里是我自己解决时候的经历,赶时间的可以直接跳过看文章最后,快速进行解决) 快速解决方案如下 总结 前言 当我们新建一个安卓项目出现Read timed out时候不要慌,这篇文章会打开…

前端的几种网络请求方式

网络请求 node编写接口 这里用到的几个包的作用 express:基于 Node.js 平台,快速、开放、极简的 Web 开发框架,官网:https://www.expressjs.com.cn/cors:用来解决跨域问题body-parser:可以通过 req.body…

AFL入门教学

1、AFL简介 AFL(American Fuzzy Lop)是一个面向安全的模糊测试工具,它使用了一个新的编译时插桩技术和遗传算法,可以自动发现触发目标二进程程序的测试用例,从而大大提高测试代码的功能覆盖率。 AFL官网:…

mac装不了python3.7.6

今天发现一个很奇怪的问题 但是我一换成 conda create -n DCA python3.8.12就是成功的 这个就很奇怪

20.有效的括号

原题链接:20.有效的括号 看到这种需要双双匹配的题目,就感觉可以使用栈来做 题目要求是: 1.左括号必须用相同类型的右括号闭合。 2.左括号必须以正确的顺序闭合。 3.每个右括号都有一个对应的相同类型的左括号。 还需要注意 栈为空的时候插…

RocketMQFoundation

RocketMQFoundation 一. RocketMQ 消息队列1.1 初始化1.1.1 下载 4.9.41.1.2 配置环境变量1.1.3 启动1.1.3.1 启动 mqnamesrv.cmd1.1.3.2 启动 mqbroker.cmd -n localhost:98761.1.3.3 封装启动命令1.1.3.4 占用内存过高1.1.4 rocketmq-dashboard 仪表盘 可视化界面1.1.4.1 启动…

Python基础入门例程40-NP40 俱乐部的成员(运算符)

最近的博文: Python基础入门例程39-NP39 字符串之间的比较(运算符)-CSDN博客 Python基础入门例程38-NP38 牛牛的逻辑运算(运算符)-CSDN博客 Python基础入门例程37-NP37 不低于与不超过(运算符&#xff0…

c++中httplib使用

httplib文件链接:百度网盘 请输入提取码 提取码:kgnq json解析库:百度网盘 请输入提取码 提取码:oug0 一、获取token 打开postman, 在body这个参数中点击raw,输入用户名和密码 然后需要获取到域名和地址。 c++代码如下: #include "httplib.h" #in…

Linux环境基础开发工具使用(二)

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、Linux项目自动化构建工具-make/Makefile1、背景2、实例代码3、依赖关系4、依赖方法5、原理…

pytorch3D Windows下安装经验总结

一、说明及准备工作 最近在安装pytorch3D的时候遇到了很多问题,查了很多博客,但发现讲的都不太全,所以特将自己的及收集到的安装过程经验总结如下。我是在Anaconda中虚拟环境下安装的。 1.1准备工作 官方安装教程如下:https://…

java入门-JDK下载与安装

1、下载jdk Java 的产品叫JDK(Java Development Kit: Java开发者工具包),必须安装JDK才能使用java 1、官网地址 https://www.oracle.com/java/ https://www.oracle.com/java/technologies/downloads/ 目前比较稳定的版本为 JDK17. 我们就安…