【Linux】之搭建 Redis 环境

前言


在 Linux 服务器上有两种常用的方式搭建 Redis 环境,一种是直接原生的本地安装,一种就是使用 Docker,使用 Docker 的话比较快速方便,具体搭建流程参考我的另一篇博客:【Docker】之安装 Redis。

但实际的开发环境可能更多的使用本地安装的方式进行搭建,所以这里我就演示如果在 Linux 系统下本地安装搭建 Redis 环境,以 CentOS7 系统为例。


Redis 环境搭建流程


1、下载 Redis

直接前往 Redis 的官网下载地址:https://redis.io/download/,根据自己的需求下载对应版本的稳定版本,下载下来的是一个 gz 压缩格式的 tar 包:redis-stable.tar.gz这里我下载时的版本为 7.2.3)。

解压 Redis:

下载下来后放到 Linux 环境的目录下,一般我会在 /usr/local/ 目录下创建一个 application/ 目录用来存放自己安装的应用软件。放好压缩包后,执行以下解压缩命令:

tar -xzvf redis-stable.tar.gz

为了便于后续维护,我根据版本给它重命名一下:

mv redis-stable redis-7.2.3

注意:以上的操作并不是无意义的,由于安装包中包含了 Redis 服务需要的各个配置文件,比如:redis.confsentinel.conf 等,后续进行配置更改都要用到这些文件。同时安装包里面也包含了 Redis 的 README.md 帮助文档、src 源码文件等,所以需要尽可能规范好安装包的位置和命名。

2、编译安装 Redis

进入解压缩后的 Redis 安装包目录:

cd redis-7.2.3

执行编译安装命令:

make && make install

因为 Redis 是用 C 语言编写的,所以编译需要用到 gcc,没有的话就安装一下,比如:yum install -y gcc

安装完成后,默认的安装目录在 /usr/local/bin 下:

$ ls /usr/local/bin/redis* -l
-rwxr-xr-x. 1 root root  6900632 Dec 25 03:24 redis-benchmark
lrwxrwxrwx. 1 root root       12 Dec 25 03:24 redis-check-aof -> redis-server
lrwxrwxrwx. 1 root root       12 Dec 25 03:24 redis-check-rdb -> redis-server
-rwxr-xr-x. 1 root root  7620880 Dec 25 03:24 redis-cli
lrwxrwxrwx. 1 root root       12 Dec 25 03:24 redis-sentinel -> redis-server
-rwxr-xr-x. 1 root root 15411784 Dec 25 03:24 redis-server

这其中有三个关键的命令:

  • redis-cli:是 Redis 提供的命令行客户端;
  • redis-server:是 Redis 的服务端启动脚本;
  • redis-sentinel:是 Redis 的哨兵启动脚本;

我们可以查看一下当前的版本:

$ redis-server -v
Redis server v=7.2.3 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64

安装成功后可以执行命令 make clean 将编译过程中产生的中间文件清理掉,这可以节省一些空间。

3、运行 Redis 服务

启动 Redis 服务的方式有多种,比如直接默认启动,或者指定配置文件启动,同时我们还可以自定义 service 服务实现开机自动启动。下面我们分别讲解这几种启动方式。

3-1、默认启动

安装完成之后,我们不加任何启动参数,直接运行 redis-server 命令就是以默认形式启动 Redis 服务:

$ redis-server

启动成功后就可以看到我们 Redis 经典的存储 Logo 标志:

11944:M 25 Dec 2023 08:19:30.909 * monotonic clock: POSIX clock_gettime_.__.-``__ ''-.__.-``    `.  `_.  ''-._           Redis 7.2.3 (00000000/0) 64 bit.-`` .-```.  ```\/    _.,_ ''-._(    '      ,       .-`  | `,    )     Running in standalone mode|`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379|    `-._   `._    /     _.-'    |     PID: 11944`-._    `-._  `-./  _.-'    _.-'|`-._`-._    `-.__.-'    _.-'_.-'||    `-._`-._        _.-'_.-'    |           https://redis.io`-._    `-._`-.__.-'_.-'    _.-'|`-._`-._    `-.__.-'    _.-'_.-'||    `-._`-._        _.-'_.-'    |`-._    `-._`-.__.-'_.-'    _.-'`-._    `-.__.-'    _.-'`-._        _.-'`-.__.-'

我们可以运行 redis-cli 客户端命令来检查服务运行情况:

$ redis-cli
127.0.0.1:6379> ping
PONG

redis-cli 命令常用的参数有:

  • -h:指定要连接的redis节点的IP地址,默认是 127.0.0.1
  • -p:指定要连接的redis节点的端口,默认是 6379
  • -a:指定 redis 的访问密码。

注意: 这种 redis-server 启动方式属于前台启动,会阻塞整个会话窗口,可以通过关闭窗口或者按下 CTRL + C 来停止 Redis 服务,所以,不推荐使用这种方式启动 Redis 服务。

3-2、指定配置文件启动

Redis 服务启动的时候可以加载指定的配置文件,我们可以在配置文件中修改配置实现 Redis 在后台以守护进程的方式启动

配置文件在我们的安装包目录下,名字叫 redis.conf,修改配置文件之前我们先备份一下:

cp redis.conf redis.conf.back

然后编辑 redis.conf 文件,将里面的 daemonize 设置为 yes 则表示让 Redis 服务在后台以守护进程的形式运行(更多完整的配置参数参考后面的参数讲解):

daemonize yes

修改完保存之后,我们指定配置形式启动 Redis 服务:

redis-server /usr/local/application/redis-7.2.3/redis.conf

想要关闭服务的话可以先查询 Redis 服务的运行进程号(PID):

$ ps -ef | grep redis-server
root     14783     1  0 09:17 ?        00:00:00 redis-server 127.0.0.1:6379
root     14968 10044  0 09:20 pts/1    00:00:00 grep --color=auto redis-server

然后再通过 kill 命令关闭服务进程:

kill -9 14783

!!关于后台进程警告提示:

当开启 Redis 后台运行并启动时会提示以下警告:

WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. 
Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. 
To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

这个错误消息大致的意思是 Redis 提示您需要启用内存过度分配(memory overcommit)以确保在低内存条件下,后台保存(background save)或复制(replication)操作能够正常进行。未启用内存过度分配可能导致这些操作在低内存情况下失败,甚至在没有低内存情况下也可能导致失败。

此外,它还提到了一个关于 jemallocissues 问题,感兴趣的话可以进去看一下。

解决问题方式也很简单,提示中也给出的解决方案:我们需要编辑 /etc/sysctl.conf 文件,然后添加以下内容,然后保存文件(想要生效需要重启系统):

vm.overcommit_memory = 1

如果想要不重启系统立即生效的话,可以运行以下命令:

sysctl vm.overcommit_memory=1

运行以下命令验证更改是否已生效,如果它返回1,则表示内存过度分配已成功启用:

cat /proc/sys/vm/overcommit_memory

3-3、开机自动启动

对于需要开机自动启动的服务程序,我们一般通过 systemctl 命令来实现,比如:

systemctl enable redis-server

但这种方式无法加载指定配置来自定义 Redis 服务的启动参数配置,但我们可以编写 .service 文件来实现。

首先,我们先在 /etc/systemd/system/ 目录下创建 Redis 的服务系统文件 redis.service名称可以自己定义):

vim /etc/systemd/system/redis.service

文件内容如下:

[Unit]
Description=redis-server
After=network.target[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /usr/local/application/redis-7.2.3/redis.conf
PrivateTmp=true[Install]
WantedBy=multi-user.target

保存文件后重载系统服务:

systemctl daemon-reload

重载服务之后,我们就可以直接通过操作 redis 命令来操作 redis-server 服务了:

# 查看状态
systemctl status redis
# 启动
systemctl start redis
# 停止
systemctl stop redis
# 重启
systemctl restart redis

对应的,执行下面的命令就可以实现开机自动启动了:

systemctl enable redis

4、配置常用的 redis.conf 参数

redis.conf 配置文件种,除了上面提到的设置守护进程参数 daemonize yes 之外,还有其他关键的设置参数,这里,我们就展开讲解一些常用的关键参数:

# 守护进程,修改为yes后即可后台运行
daemonize yes # 设置允许访问的地址,默认是127.0.0.1,表示只能在本地访问。修改为0.0.0.0则可以在任意IP访问(生产环境不要设置为0.0.0.0)
bind 0.0.0.0# 设置访问密码,设置后需要输入对应的密码才能连接 Redis 服务
requirepass 123456# 监听的端口
port 6379# 工作目录,默认是当前目录,也就是运行 redis-server 时的命令,日志、持久化等文件会保存在这个目录
dir ./# 设置数据库数量,设置为3则代表只使用3个库,默认有16个库,编号0~15
databases 3# 设置 redis 能够使用的最大内存
maxmemory 512mb# 日志文件,默认为空,不记录日志,可以指定日志文件名
logfile "redis.log"

注意:由于 protected-mode 默认 yes,此时如果想要远程访问 Redis 的话需要设置 bindrequirepass,否则就需要将 protected-mode 设置为 no不推荐)。

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

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

相关文章

【WinForm.NET开发】设计具有更改通知的出色数据源

本文内容 简单绑定的更改通知基于列表的绑定的更改通知自定义控件的更改通知应用 PropertyNameChanged 模式实现 INotifyPropertyChanged 接口同步绑定 Windows 窗体数据绑定最重要的概念之一是更改通知。 为确保数据源和绑定控件始终具有最新数据,必须为数据绑定…

Linux下的文本编辑Vi/Vim

编辑文件 文本编辑器有很多,比如图形模式的gedit、OpenOffice 等,文本模式下的编辑器有vi、vim(vi的增强 版本)等。vi和vim是我们在Linux中最常用的编辑器。 gedit 类似于Windows下的记事本,很方便的去修改文本。 Op…

【C语言】指针

基本概念 在C语言中,指针是一种非常重要的数据类型,它用于存储变量的内存地址。指针提供了对内存中数据的直接访问,使得在C语言中可以进行灵活的内存操作和数据传递。以下是关于C语言指针的一些基本概念: 1. 指针的声明&#xff…

深入了解云原生:定义与特征解析

文章目录 一、云原生概述1.1 什么是云原生1.2 云原生组成要素1.3 补充资料 二、云原生的目标2.1 云原生关键目标2.2 云原生特性 三、云原生应用 VS 传统单体应用参考资料 一、云原生概述 1.1 什么是云原生 (1)云原生定义 云原生(Cloud Native) 是一种软件架构和开发方法论&a…

山西电力市场日前价格预测【2023-12-27】

日前价格预测 预测说明: 如上图所示,预测明日(2023-12-27)山西电力市场全天平均日前电价为737.42元/MWh。其中,最高日前电价为1500.00元/MWh,预计出现在08:00~08:30。最低日前电价为313.03元/MWh&#xff…

【数值分析】乘幂法,matlab实现

乘幂法 一种求实矩阵 A {A} A 的按模最大的特征值,及其对应的特征向量 x i {x_i} xi​ 的方法,只能求一个。特别适合于大型稀疏矩阵。 一个矩阵的特征值和特征向量可以通过矩阵不断乘以一个初始向量得到。 每次乘完之后要规范化,防止上溢或…

Qt Creator可视化交互界面exe快速入门3

上一期介绍的通过Qt Creator的组件直接拖拽的方式完成了一个界面,这期介绍按钮的信号交互。 专有名称叫信号与槽 实现方法1: 鼠标右键选择转化为槽就会跳出这样的界面 选择第一个为单击信号。然后就会跳转到代码界面。多了on_pushButton_clicked()。 …

分页合理化是什么?

一、前言 只要是干过后台系统的同学应该都做过分页查询吧,前端发送带有页码(pageNum)和每页显示数量(pageSize)的请求,后端根据这些参数来提取并返回相应的数据集。在SpringBoot框架中,经常会使…

以社区为基石,IvorySQL逐步成为中国基础软件开源数据库产业重要一员

编者按:开源数据库技术,作为软件开发领域的一大趋势,正逐渐改变整个软件产业的面貌。在这个充满活力的领域中,瀚高股份的IvorySQL凭借其社区活跃度和影响力,已经成为中国基础软件开源数据库产业的重要一员。随着《2023…

TCP:IP原理

TCP/IP 原理 TCP/IP 协议不是 TCP 和 IP 这两个协议的合称,而是指因特网整个 TCP/IP 协议族。从协议分层模型方面来讲,TCP/IP 由四个层次组成:网络接口层、网络层、传输层、应用层。 网络访问层(Network Access Layer) 网络访问层(Network …

宏集方案 | 物联网HMI的关键驱动力—SCADA级功能库和控件库

来源:宏集科技 工业物联网 宏集方案 | 物联网HMI的关键驱动力—SCADA级功能库和控件库 原文链接:https://mp.weixin.qq.com/s/UEPtpTehdbFrw3MUCnuR2A 欢迎关注虹科,为您提供最新资讯! 01 前言 在这个数字化时代,物…

Java内存区域与内存溢出异常

Java与C++之间有一堵由内存分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。 2.1 概述 对于从事C、C++程序开发的开发人员来说,在内存管理领域,他们即是拥有最高权力的“皇帝”,又是从事最基础工作的劳动人民——即拥有每一个对象的“所有权”,又…

个性化定制的知识付费小程序,为用户提供个性化的知识服务,知识付费saas租户平台

明理信息科技知识付费saas租户平台 在当今数字化时代,知识付费已经成为一种趋势,越来越多的人愿意为有价值的知识付费。然而,公共知识付费平台虽然内容丰富,但难以满足个人或企业个性化的需求和品牌打造。同时,开发和…

vscode中默认shell选择

terminal.integrated.defaultProfile.linux在vs的Preference的Settings里面搜索terminal.integrated.defaultProfile.linux,默认的应该是null,将其修改为bash即可。 linux———/bin/sh、 /bin/bash、 /bin/dash的区别

亚马逊云科技 re:Invent 2023 产品体验:亚马逊云科技产品应用实践 国赛选手带你看 Elasticache Serverless

抛砖引玉 讲一下作者背景,曾经参加过国内世界技能大赛云计算的选拔,那么在竞赛中包含两类,一类是架构类竞赛,另一类就是 TroubleShooting 竞赛,对应的分别为亚马逊云科技 GameDay 和亚马逊云科技 Jam,想必…

NPM简介与使用指南:打造前端开发的利器

前言: 在现代前端开发中,NPM(Node Package Manager)已经成为了不可或缺的工具。它是一个强大的包管理工具,为开发者提供了丰富的第三方库和工具,大大简化了项目的依赖管理和构建过程。本篇博客将介绍 NPM …

Redis——IO多路复用

一:文件描述符 每一个网络连接其实都对应一个文件描述符 二:IO多路复用是什么? IO多路复用类似一个规范和接口,落地实现是由 linux系统的 select -> poll -> epoll,就是说通过一种机制,可以监视多…

数据结构:图文详解 树与二叉树(树与二叉树的概念和性质,存储,遍历)

目录 一.树的概念 二.树中重要的概念 三.二叉树的概念 满二叉树 完全二叉树 四.二叉树的性质 五.二叉树的存储 六.二叉树的遍历 前序遍历 中序遍历 后序遍历 一.树的概念 树是一种非线性数据结构,它由节点和边组成。树的每个节点可以有零个或多个子节点…

【开题报告】基于SpringBoot的企业资产管理系统的设计与实现

1.选题背景 基于Spring Boot的企业资产管理系统的设计与实现选题背景主要源于现代企业对资产管理的需求。随着企业规模的扩大和业务的发展,各类资产的数量和种类都在不断增加,包括办公设备、电脑、软件许可证、车辆等。传统的手工记录和管理方式已经无法…

【Linux基础】5. 磁盘管理

文章目录 【 1. 查看磁盘空间 】1.1 df 查看空间利用大小1.2 du 查看目录所占空间大小 【 2. 打包、压缩 】2.1 tar -cvf 打包2.2 gzip 压缩 【 3. 解压缩、解包 】3.1 gunzip 解压缩3.2 tar -xvf 解包 【 1. 查看磁盘空间 】 1.1 df 查看空间利用大小 作用 查看整个文件系统…