当前位置: 首页 > news >正文

CentOS系统上安装单机版Redis教程

一、前言

1.1 为什么选择Redis?

Redis不仅支持丰富的数据类型(如字符串、哈希、列表、集合、有序集合等),还具有高性能、持久化、发布订阅、事务和Lua脚本等特点。这些优势使其成为分布式系统和高并发应用中的首选。

1.2 为什么选择CentOS?

CentOS作为一款开源的类Unix操作系统,因其稳定性、高效性和社区支持广泛应用于服务器端。很多企业在生产环境中使用CentOS,从而本教程选择在CentOS环境上安装Redis。

二、准备工作

2.1 安装前提条件

确保您拥有以下条件:

  • 一台已安装CentOS系统的服务器或虚拟机;
  • 拥有该系统的root访问权限或具有sudo权限的用户;
  • 需连接互联网。

三、安装步骤

3.1 更新系统软件包

在安装Redis之前,先更新系统中已安装的软件包。这可以确保使用到最新版本的软件包,避免兼容性问题。

sudo yum update -y

3.2 安装依赖库

Redis需要一些开发库才能成功编译和运行,常见的依赖库为gcc

sudo yum install -y gcc

3.3 下载Redis源码

我们将从Redis的官方网站下载Redis的最新稳定版本。你的系统中需要安装wgetcurl来下载源码。如果没有该工具,可以先安装:

sudo yum install -y wget

使用wget下载Redis源码:

wget http://download.redis.io/releases/redis-6.2.6.tar.gz

(备注:查看最新版本,可以到Redis官方下载页面redis.io/download)

3.4 解压源码包

使用tar命令解压下载的源码包:

tar zxvf redis-6.2.6.tar.gz

3.5 编译安装Redis

切换到解压后的Redis目录:

cd redis-6.2.6

然后执行make命令编译Redis:

make

编译过程完成后,继续执行以下命令进行安装:

sudo make install

这将会把Redis的可执行文件安装到/usr/local/bin目录下。

3.6 配置Redis

3.6.1 创建配置目录

为了使Redis更便于管理,我们将创建一个专门的目录用来放置Redis的配置文件和数据文件:

sudo mkdir -p /etc/redis /var/lib/redis
3.6.2 复制默认配置文件

将默认的配置文件复制到配置目录中:

sudo cp redis.conf /etc/redis/redis.conf
3.6.3 修改配置文件

编辑Redis配置文件redis.conf

sudo vi /etc/redis/redis.conf

修改以下几项内容:

  • daemonize设置为yes,使Redis以后台进程的方式运行:

    daemonize yes
    
  • 设置dir为数据文件存储目录:

    dir /var/lib/redis
    
  • 设置bind为本地IP地址,限制只允许本地访问(为了安全):

    bind 127.0.0.1
    
  • 设置protected-modeyes,开启保护模式:

    protected-mode yes
    

完成编辑后保存退出。

3.7 设置Redis为系统服务

3.7.1 创建系统服务文件

我们将为Redis创建一个系统服务文件,使其随着系统启动自动启动。

创建并编辑服务文件:

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

在文件中添加以下内容:

[Unit]
Description=Redis In-Memory Data Store
After=network.target[Service]
User=root
Group=root
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always[Install]
WantedBy=multi-user.target

保存并退出编辑器。

3.7.2 启动并启用Redis服务

执行以下命令启动Redis服务:

sudo systemctl start redis

并设置Redis服务开机自启动:

sudo systemctl enable redis

3.8 验证Redis安装

3.8.1 检查服务状态

执行以下命令,确认Redis服务是否正常启动:

sudo systemctl status redis

如显示active (running),则说明Redis已成功启动。

3.8.2 使用Redis客户端连接

执行Redis命令行客户端工具,测试是否可以连接到Redis服务器:

redis-cli

输入以下命令,检测Redis是否正常工作:

ping

若返回PONG,表示Redis安装和配置成功。

四、常见问题和解决方法

4.1 无法启动Redis服务

问题描述

在启动Redis服务时,可能会显示以下错误信息:

Job for redis.service failed because the control process exited with error code.
解决方法

查看日志文件/var/log/messages,检查详细的错误信息。通常是因为配置文件中的某项设置错误,请根据日志中的提示修正配置文件,然后重启服务。

4.2 安装过程中依赖库缺失

问题描述

在编译过程中,可能会显示类似以下的错误信息:

make: gcc: Command not found
解决方法

这是因为系统中缺少gcc编译器,可以使用如下命令补充安装:

sudo yum install -y gcc

4.3 Redis无法绑定到指定端口

问题描述

Redis服务无法启动,因为指定端口已被其他程序占用。

解决方法

修改redis.conf文件中的port项,指定一个未被占用的端口号。如:

port 6380

五、总结

通过上述步骤,我们完成了在CentOS系统上安装单机版Redis的全过程。从环境准备到安装、配置、启动以及常见问题的解决,希望这篇教程能够对您在CentOS系统上部署Redis有所帮助。Redis作为高效的缓存解决方案,能够极大提升系统的性能和响应速度,是现代分布式系统的关键组件之一。在实际应用中,根据业务需求和性能要求,还可以进一步配置和优化Redis。

六、附录

6.1 常用Redis命令

  • SET key value:设置键值对。
  • GET key:获取键的值。
  • DEL key:删除键。
  • EXISTS key:检查键是否存在。
  • FLUSHALL:清空所有数据。

6.2 参考资料

  • Redis官方文档:https://redis.io/documentation
  • CentOS官方文档:https://www.centos.org/docs

至此,您已经成功在CentOS系统上部署了单机版Redis。希望这篇教程能帮助您顺利完成安装部署过程,并深入了解Redis的各项功能与特性。

相关文章:

CentOS系统上安装单机版Redis教程

一、前言 1.1 为什么选择Redis? Redis不仅支持丰富的数据类型(如字符串、哈希、列表、集合、有序集合等),还具有高性能、持久化、发布订阅、事务和Lua脚本等特点。这些优势使其成为分布式系统和高并发应用中的首选。 1.2 为什么…...

纯Java实现Google地图的KMZ和KML文件的解析

目录 前言 一、关于KMZ和KML 1、KMZ是什么 2、KML是什么 二、Java解析实例 1、POM.xml引用 2、KML 基类定义 3、空间对象的定义 4、Kml解析工具类 三、KML文件的解析 1、KML解析测试 2、KMZ解析测试 四、总结 前言 今天是六.一儿童节,在这里祝各位大朋友…...

k8s自定义资源你会创建吗

创建自定义资源定义 CustomResourceDefinition 当你创建新的 CustomResourceDefinition(CRD)时,Kubernetes API 服务器会为你所 指定的每一个版本生成一个 RESTful 的 资源路径。CRD 可以是名字空间作用域的,也可以是集群作用域的…...

CATIA二次开发VBA入门(4)——进程外开发环境搭建,vb.net在Visual Studio中开发,创建圆柱曲面的宏录制到二次开发案例

目录 引出vb.net和vb6.0 进程外开发环境搭建vb.net开发环境搭建《CATIA二次开发技术基础》模板 添加宏库引用 vs开发环境初步vs中的立即窗口对象浏览器 建立模板案例:创建一堆圆柱曲面第一步:录制宏第二步:代码精简第三步:for循环…...

c++字符串相关接口

c字符串相关接口 1.str2wstr(str转换wstr)2.wstr2str(str转换wstr)3.Utf8ToAsi(Utf8转换ANSI)4.AsiToUtf8(ANSI转换Utf8)5.stringformatA/stringformatW(按照指定的格式格式化字符串)6.GetStringBetween(获取cStart cEnd之间的字符串)7.Char2Int(char转int)8.Str2Bin(字符串转换…...

Maven打包错误:无效的源发行版:17

1. 报错问题 在用maven进行打包时(clean & install),报如下错误: 一开始让我很摸不着头脑,我确定我的pom.xml,还有IDEA中的Project Settings是正确的。 2. 排查 尽管确定,但还是一个个排…...

【环境栏Composer】Composer常见问题(持续更新)

1、执行composer install提示当前目录中没有 composer.lock 文件时 No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information. Composer 在执行 install 命令时会…...

塑造更智慧的AI:策略与路径探索

提升数据质量: 数据清洗:去除数据中的异常值、缺失值、噪声等干扰因素,确保数据的准确性和一致性。数据标注:为数据集提供准确的标签,以便进行有监督学习。标注的质量直接影响模型的性能。数据增强:通过图像…...

软设之快速排序

快速排序是冒泡排序的改进算法 它采用的是分治法,基本思想是把原问题分解为若干规模更小但结构与原问题相似的子问题,通过递归解决这些子问题,然后将这些子问题的解组合成原问题的解。 它的步骤是 1.在待排序的n个记录中任取一个记录&…...

从零学算法2965

2965. 找出缺失和重复的数字 给你一个下标从 0 开始的二维整数矩阵 grid,大小为 n * n ,其中的值在 [1, n2] 范围内。除了 a 出现 两次,b 缺失 之外,每个整数都 恰好出现一次 。 任务是找出重复的数字a 和缺失的数字 b 。 返回一个…...

【Mac版】Java生成二维码

软件版本 IntelliJ IDEA:2023.2 JDK:17 Tomcat:10.1.11 Maven:3.9.3 技术栈 servlet谷歌的:zxing 生成普通的黑白二维码在二维码中间添加一个小图标 github开源项目:qrcode qrcode开源项目的内部是基于z…...

ROS2自定义服务接口

ROS2自定义服务接口 在src/village_interface 下构建srv文件夹 src/village_interface/srv 下新建一个BorrowMoney.srv 遵循大小写编程规范 # 客户端请求 string name uint32 money # 中间这三个横杠很重要 不能删掉 --- # 服务端响应 bool success uint32 money接口编译 修改…...

linux /www/server/cron内log文件占用空间过大,/www/server/cron是什么内容,/www/server/cron是否可以删除

linux服务器长期使用宝塔自带计划任务,计划任务执行记录占用服务器空间过大,导致服务器根目录爆满,需要长期排查并删除 /www/server/cron 占用空间过大问题处理 /www/server/cron是什么内容?/www/server/cron是否可以删除&#xf…...

C++青少年简明教程:break语句、continue语句

C青少年简明教程:break语句、continue语句 break语句 只能用在switch语句和循环语句(for循环、while循环和do-while循环)中。作用:跳出switch语句或提前终止循环。 break语句的基本语法如下: break; break语句的示例…...

MySQL实战行转列(或称为PIVOT)实战sales的表记录了不同产品在不同月份的销售情况,进行输出

有一个sales的表,它记录了不同产品在不同月份的销售情况: productJanuaryFebruaryMarchProduct AJanuary10Product AFebruary20Product BJanuary5Product BFebruary15Product CJanuary8Product CFebruary12 客户需求展示为如下的样子: pro…...

牛客NC164 最长上升子序列(二)【困难 贪心+二分 Java/Go/PHP/C++】

题目 题目链接: https://www.nowcoder.com/practice/4af96fa010c44638a7e112abf65f7237 思路 贪心二分 所谓贪心,就是往死里贪,所以对于最大上升子序列,结尾元素越小,越有利于后面接上其他的数,也就可能变…...

电子烟开发【恒压、恒有效算法】

恒压算法 pwm是通过软件模拟的 pwm满值运行是250全占空比 #define D_TARGET_AVERAGE_VOLTAGE 3500 //R_ADC1_Vout :发热丝两端AD值 //R_ADC_FVR :电池电压AD值 //FVR_VOLTAGE :电池AD参考电压 满电值AD //R_Smk1Duty :最后…...

基于Open3D的点云处理22-非阻塞可视化/动态可视化

官网测试用例:examples/python/visualization/non_blocking_visualization.py 非阻塞可视化,即实时更新点云数据; 如下,动态可视化ICP的匹配过程: import open3d as o3d import numpy as npif __name__ == "__main__":o3d.utility.set_verbosity_level(o3d.ut…...

C++面试题其一

C和C的区别 C和C都是广泛使用的编程语言,但它们有显著的区别: 语言范式: C:是一种过程化编程语言,强调过程和函数的使用。C:是一种多范式编程语言,支持面向对象编程、泛型编程和过程化编程。 …...

CentOS7某天的samba服务搭建操作记录(还没成功)

#CentOS7 yum软件仓库阿里云 samba服务器配置失败 sensors成功了 (花了200元组装H61测试机,75元的主板只有一块能用,垃圾板但又不完全能用) 2024.5月的某天记录如下: https://blog.csdn.net/dszgf5717/article/details/53732182 …...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如&#xff1a…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...