【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=libc 和 make 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, PIDFILE 和 CONF 配置项内容。
修改完毕后的配置文件内容如下所示:
#!/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问题的解决办法
相关文章:
【Redis 速通】Redis 在 Linux 上的单机服务快速搭建与部署(附完整流程步骤及命令代码)
Redis 单机版安装与部署 Written By: Xinyao Tian 概述 本文档主要描述了 Redis 的生产环境安装及配置方法。 主要步骤 编译及安装 进入 root 用户并上传 Redis 源码安装包 查看 Redis 源码安装包的上传情况: [rootcentos-host redis]# pwd /opt/redis [root centos-ho…...
前端JavaScript
文章目录 一、JavaScript概述JS简介1.ECMAScript和JavaScript的关系2.ECMAScript的历史3.什么是javas?4.JavaScript的作用? 三者之间的作用JS基础1.注释语法2.引入js的多种方式3.结束符号 变量与常量变量1.JavaScript声明2.var与let的区别常量 基本数据类…...
C语言程序设计(第五版)谭浩强 第三章课后题答案
第三章 1、假如我国国民生产总值的年增长率为7%, 计算10年后我国国民生产总值与现在相比增长多少百分比。计算公式为 ,其中r为年增长率,n为年数,p为与现在相比的倍数。 #include<stdio.h> #include<math.h>int main(){float r,…...
uni-app 解决钉钉小程序日期组件uni-datetime-picker不兼容ios问题
最近在使用uni-app开发 钉钉小程序 ,遇到一个ios的兼容性问题 uni-datetime-picker 组件在模拟器上可以使用,在真机上不生效问题 文章目录 1. 不兼容的写法,uni-datetime-picker 不兼容IOS2. 兼容的写法,使用 dd.datePicker 实现。…...
【C++入门 三】学习C++缺省参数 | 函数重载 | 引用
C入门 三 1.缺省参数1.1 缺省参数概念1.2 缺省参数分类 2. 函数重载2.1 函数重载概念2.2 C支持函数重载的原理--名字修饰(name Mangling) 3.引用3.1引用概念3.2引用特性3.3 常引用3.4 使用场景1. 做参数2. 做返回值 3.5 传值、传引用效率比较3.6引用和指针的区别 4.引用和指针的…...
视频增强修复软件Topaz Video AI mac中文版支持功能
Topaz Video AI mac是一款使用人工智能技术对视频进行增强和修复的软件。它可以自动降噪、去除锐化、减少压缩失真、提高清晰度等等。Topaz Video AI可以处理各种类型的视频,包括低分辨率视频、老旧影片、手机录制的视频等等。 使用Topaz Video AI非常简单ÿ…...
C# 使用Thread类建线程
C# 使用Thread类建线程 目录 C# 使用Thread类建线程引言Thread类启动线程优先级后台运行线程状态线程名称线程ID最后 引言 线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。线程是我们程序常用的并行运行控制手段,…...
asyncio协程框架
asyncio 基本用法 asyncio 包含以下几个主要的组件:协程 asyncio 支持使用 async/await 语法定义协程(coroutine)。协程是可以暂停和恢复执行的函数,可以实现非阻塞式的异步编程。 import asyncioasync def coroutine():print(H…...
TSINGSEE智慧安防:AI人员入侵检测算法的工作原理及应用场景概述
人员入侵检测算法基于视频分析技术,自动对视频画面进行分析识别,可以对危险区的人员闯入、靠近等行为进行实时进行检测并预警,无需人工干预,协助管理者对场所的安全问题进行监管,可以广泛运用在学校、园区、工地、车站…...
Python:PDF转长图像和分页图像
简介:随着电子化文档的普及,PDF文件的使用频率越来越高。有时我们需要将PDF中的内容转化为图片格式进行分享或编辑,那么如何才能轻松地完成此任务呢?本文将为你展示一个Python工具:如何将PDF文件转化为图片,…...
第48天:内置对象方法、 前端基础之BOM和DOM
内置对象方法 RegExp对象 // 定义正则表达式两种方式 var reg1 new RegExp("^[a-zA-Z][a-zA-Z0-9]{5,11}"); var reg2 /^[a-zA-Z][a-zA-Z0-9]{5,9}$/;// 正则校验数据 reg1.test(jason666) reg2.test(jason666)/*第一个注意事项,正则表达式中不能有空格…...
CMake系列EP02: 构建可执行程序和库
文章目录 cmake --buildmessage命令切换生成器使用ninja构建项目切换生成器的工作原理 构建和链接静态库和动态库add_library命令add_executable命令构建OBJECT类型的库条件编译opion命令option更多信息 指定编译器构建类型切换构建类型: 设置编译器选项cmake调试设…...
比亚迪今年的薪资。。
大家或许已经对比亚迪在西安的宣讲会有所耳闻,那场面真的是座无虚席。如果你稍微迟到了一些,那么你可能只能在门外或是走廊听了。 事实上,许多人早早地抵达了,只要稍微晚到,就可能错过了室内的位置。 更令人震惊的是&…...
【OpenCV实现图像找到轮廓的不同特征,就像面积,周长,质心,边界框等等。】
文章目录 概要图像矩凸包边界矩形 概要 OpenCV是一个流行的计算机视觉库,它提供了许多图像处理和分析功能,其中包括查找图像中物体的轮廓。通过查找轮廓,可以提取许多有用的特征,如面积、周长、质心、边界框等。 以下是几种使用…...
数仓建模—数仓建设概论
数仓建设概论 文章目录 数仓建设概论什么是数据仓库数据仓库对企业的意义1.全面掌握企业数据2.支持企业的决策制定3. 可靠性高怎么做数据仓库建1. 需求分析2. 设计数据仓库架构3. 数据采集4. 数据清洗5. 数据结构设计6. 数据分析7. 数据可视化8. 数据维护总结前面我们介绍了关于…...
Docker dnmp 多版本php安装 php8.2
Laravel9 开发需要用到php8.1以上的版本,而dnmp只支持到php8.0。安装php8.2的步骤如下: 1. 从/services/php80目录复制一份出来,重命名为php82,extensions目录只保留 install.sh 和 install-php-extensions 这两个文件 2. 修改.en…...
Distilling the Knowledge in a Neural Network【论文解析】
Distilling the Knowledge in a Neural Network 知识蒸馏 摘要1 引言摘要 提高几乎任何机器学习算法性能的一种非常简单的方法是在相同的数据上训练许多不同的模型,然后对它们的预测进行平均处理[3]。不幸的是,使用整个模型集合进行预测既繁琐又可能过于计算密集,特别是如果…...
基于深度学习的自动驾驶汽车语义分割与场景标注算法研究。
自动驾驶汽车是当前研究的热点领域之一,其中基于深度学习的语义分割与场景标注算法在自动驾驶汽车的视觉感知中具有重要作用。本文将围绕自动驾驶汽车的语义分割与场景标注算法展开研究。 一、研究背景 随着人工智能技术的不断发展,自动驾驶汽车逐渐成…...
国内可用超丝滑ChatGPT4.0(附网址及微信入口)
镜像网站的设置可以带来以下优势: 1.提高访问速度:由于镜像网站部署在全球不同的服务器上,用户可以从最近的服务器访问网站,从而减少延迟和提高加载速度。 2.增加可用性:如果主网站遭遇故障或网络拥堵,用…...
linux入门---线程的同步
目录标题 什么是同步生产者和消费者模型三者之间的关系消费者生产者模型改进生产者消费者模型特点条件变量的作用条件变量有关的函数条件变量的理解条件变量的使用 什么是同步 这里通过一个例子来带着大家了解一下什么是同步,在生活中大家肯定遇到过排队的情景比如…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...
springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
基于开源AI智能名片链动2 + 1模式S2B2C商城小程序的沉浸式体验营销研究
摘要:在消费市场竞争日益激烈的当下,传统体验营销方式存在诸多局限。本文聚焦开源AI智能名片链动2 1模式S2B2C商城小程序,探讨其在沉浸式体验营销中的应用。通过对比传统品鉴、工厂参观等初级体验方式,分析沉浸式体验的优势与价值…...
何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡
何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践,很多人以为AI已经强大到不需要程序员了,其实不是,AI更加需要程序员,普通人…...
Python 高级应用10:在python 大型项目中 FastAPI 和 Django 的相互配合
无论是python,或者java 的大型项目中,都会涉及到 自身平台微服务之间的相互调用,以及和第三发平台的 接口对接,那在python 中是怎么实现的呢? 在 Python Web 开发中,FastAPI 和 Django 是两个重要但定位不…...
云原生安全实战:API网关Envoy的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关 作为微服务架构的统一入口,负责路由转发、安全控制、流量管理等核心功能。 2. Envoy 由Lyft开源的高性能云原生…...
