Ubuntu系统中Redis的安装步骤及服务配置详解

 更新时间:2024年12月10日 08:44:43   作者:缘中猿  
本文主要记录了Ubuntu服务器中Redis服务的安装使用,包括apt安装和解压缩编译安装两种方式,并对安装过程中可能出现的问题、解决方案进行说明,以及在手动安装时,服务器如何添加自定义服务的问题,需要的朋友可以参考下

系统环境

ubuntu-22.04.4-live-server

安装方式

在安装方式选择上,如果对于Redis的版本没有明确要求,可以直接通过apt包管理器命令安装,简单快捷,也比较省事。

如果对于Redis的版本有明确要求,由于apt软件源中可用的版本相对较少,这时候可能就需要手动下载对应的版本压缩包,通过解压缩编译安装,然后手动配置服务,相对来说,这种方式会复杂一点点。

1、apt包管理器安装

更新apt软件包索引:sudo apt update(可选)

(1)安装redis服务

sudo apt install redis-server

(2)安装客户端(进入命令行操作使用,包含redis-cli)

sudo apt install redis tools

(3)安装检验

执行 redis-cli 进入redis命令行,在操作界面输入ping 返回 PONG 说明安装正确,也可以存取键值测试:

(4)其他操作

查看版本:redis-cli -v

查看Redis进程信息:ps -ef | grep redis

此方式版本由apt默认,配置文件默认位于/etc/redis/redis.conf,

如果需要修改Redis配置,可以调整配置文件参数,或者直接替换默认配置文件。

常见配置参数:

bind 127.0.0.1:指定 Redis 绑定的 IP 地址,默认绑定在本地回环地址。

protected-mode yes:保护模式,建议保持开启。

port 6379:指定 Redis 侦听的端口。

daemonize no:是否以后台守护进程方式运行,生产环境中建议设置为 `yes`。

logfile "":指定日志文件路径,如果不指定,则日志输出到标准输出。

dir ./:指定工作目录,用于存放数据库文件。

命令查看当前apt软件源中的可用版本(执行任意一个即可):

 apt info redis-server

apt show -a redis-server

apt-cache madison redis-server

卸载服务:

1)停止redis服务:sudo systemctl stop redis-server

2)卸载redis-server包:sudo apt-get remove --purge redis-server

3)清理残留包:sudo apt-get remove --purge redis-server

4)清除redis数据目录(可选):sudo rm -r /var/lib/redis

5)更新apt缓存(可选):sudo apt update

2、解压缩编译安装步骤

Redis不同版本安装包的下载地址网上很多,这里提供一个华为云的地址,没有下载地址的话可以先用着,基本上各个版本都有,找到自己需要的版本下载即可:Index of redis-local

(1)安装依赖

首先,确保你的系统已经安装了必要的编译工具和依赖项。

命令行终端运行以下命令安装:

sudo apt update

sudo apt install build-essential tcl

(2)解压缩 Redis 包

进入到你下载的自定义版本软件包目录,可以在自己建一个项目路径,专门用于Redis服务。

在这里,如果你是使用远程连接工具操作服务器,且又是在根目录下创建的Redis文件目录,那么上传文件时,可能会遇到没有写入权限的问题,导致上传失败:

解决方案有两种:

1)先将文件上传到普通用户目录,然后使用sudo cp “普通用户文件地址” “根目录文件位置” 命令将压缩包文件拷贝到对应位置,或者mv移动也行。

2)更改根目录下创建的redis服务目录的权限,使得其他用户也具有读、写、执行权限,

在文件夹所在目录位置执行 sudo chmod 777 redis/ 即可。

ok,接下来继续安装步骤,

这里以 `redis-7.2.4.tar.gz` 为例,上传到自己的目录后,解压缩该文件:

解压:sudo tar xzf redis-7.2.4.tar.gz

进入解压后的文件目录:cd redis-7.2.4

解压之后可以看到文件夹内的内容:

(3)编译Redis

在解压缩后的目录中,运行命令编译 Redis:

sudo make

编译会跑一小会儿,过程中不需要额外操作,等待跑完回到命令行输入行就行。

编译完如下:

(4)测试编译文件(可选)

为了确保编译后的 Redis 没有问题,可以运行测试套件:

sudo make test

测试也会跑一小会儿,喝口水吃颗糖做几个俯卧撑啥的,耐心等待一下即可,如果所有测试都通过,说明编译成功,完成后如下:

(5)安装Redis

编译完成后,即可将 Redis 安装到系统中:

sudo make install

(6)启动Redis

加压缩编译安装的Redis服务,配置文件redis.conf就在解压缩目录下,同样可以根据实际需求,进行编辑调整参数,或者替换。

手动启动:sudo redis-server redis.conf(不带配置文件参数的话,默认是解压目录下的配置文件,解压目录下执行,不在解压目录下的话,需要加上配置文件的绝对路径)

服务启动可能遇到的问题

(a)Redis推荐配置检测问题

报错信息如下:

查了下意思是,Redis检测到系统的内存过度提交(memory overcommit)设置不符合其推荐配置,巴拉巴拉啥的。

解决方式:

默认配置关闭了守护进程方式启动,使用时一般Redis都是以守护进程方式启动。

修改配置文件参数,使用守护进程方式启动即可(常见参数解析方式1有简单介绍)

(b)端口占用问题

解决方式:

1)更改配置文件中的端口号配置。

2)查看当前进程端口占用情况,找到占用端口的进程,结束其他占用端口的进程(sudo kill -9 <进程号>),之后重新启动服务即可。

问题解决之后即可正常启动Redis服务

(7)安装检验

启动服务之后检测是否安装成功、正常使用。

查看版本:redis-server -v,并存取键值测试,可以看到正常使用。

(8)添加Redis开机自启服务

对于手动解压缩编译安装的Redis,每次开机时,如果要使用Redis,还需要手动开启服务,如果想要服务开机自启,就需要添加自定义服务了。

自定义服务步骤:

(a)首先,进入系统目录 /etc/systemd/system/ ,

执行sudo touch redis-server.service 创建一个自定义服务 redis-server.service

(b)然后编辑redis-server.service文件,文件内容模版如下:

[Unit]
Description=redis server
Documentation=https://redis.io/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
 
[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
ExecStart=redis-server /data/redis/redis.conf
ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /var/run/redis_6379.pid)"
ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /var/run/redis_6379.pid)"
 
[Install]
WantedBy=multi-user.target

需要关注的是 ExecStart=redis-server /data/redis/redis.conf,这里存放的是我们手动启动的执行命令,需要根据自己配置文件的所在位置自行调整,其他地方基本上都差别不大,有兴趣的同学也可以动动小手去查阅一下各项参数的作用。

插播一下:

如果觉得在终端编辑比较慢,也可以在自己找好一个模版,根据自己的配置文件路径修改完之后,直接将这个自定义文件上传到此目录下,效果也一致。

(c)开启自定义服务

保存自定义服务后,重新加载服务单元文件:sudo systemctl daemon-reload

将自定义的redis服务文件设置为自启:sudo systemctl enable redis-server.service

启动自定义服务:sudo systemctl start redis-server.service

查看服务状态:sudo systemctl status redis-server.service

重启检验开机自启情况,可以看到效果跟预期一致。

以上就是Ubuntu系统中Redis的安装步骤及服务配置详解的详细内容,更多关于Ubuntu中Redis安装及配置的资料请关注脚本之家其它相关文章!

相关文章

  • Jackson2JsonRedisSerializer和GenericJackson2JsonRedisSerializer区别

    Jackson2JsonRedisSerializer和GenericJackson2JsonRedisSerializ

    本文主要介绍了Jackson2JsonRedisSerializer和GenericJackson2JsonRedisSerializer区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • 在不重启的情况下热更新Redis集群密码的流程步骤

    在不重启的情况下热更新Redis集群密码的流程步骤

    当我们需要在运行中的 Redis 集群中修改密码时,可以通过 Redis 的配置命令 CONFIG SET 实现即时修改,并使用 CONFIG REWRITE 将更改持久化到配置文件中,在本文中,我们将详细介绍如何安全地更新你的 Redis 集群密码,需要的朋友可以参考下
    2024-05-05
  • Redis集群搭建(主从模式、哨兵模式、集群模式)

    Redis集群搭建(主从模式、哨兵模式、集群模式)

    本文主要介绍了Redis集群搭建,主要包括主从模式、哨兵模式、集群模式这三种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-01-01
  • 解密Redis助力双11背后电商秒杀系统(推荐)

    解密Redis助力双11背后电商秒杀系统(推荐)

    这篇文章主要介绍了解密Redis助力双11背后电商秒杀系统,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • redis存储空间复杂度和时间复杂度的平衡

    redis存储空间复杂度和时间复杂度的平衡

    本文主要介绍了在奖品概率计算中,如何平衡内存占用和时间复杂度,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-02-02
  • 虚拟机linux安装redis实现过程解析

    虚拟机linux安装redis实现过程解析

    这篇文章主要介绍了虚拟机linux安装redis实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • redis执行lua脚本的实现方法

    redis执行lua脚本的实现方法

    redis在2.6推出了脚本功能,允许开发者使用Lua语言编写脚本传到redis中执行。本文就介绍了redis执行lua脚本的实现方法,感兴趣的可以了解一下
    2021-11-11
  • Redis五种数据结构在JAVA中如何封装使用

    Redis五种数据结构在JAVA中如何封装使用

    本篇博文就针对Redis的五种数据结构以及如何在JAVA中封装使用做一个简单的介绍。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-11-11
  • Redis实现分布式锁(setnx、getset、incr)以及如何处理超时情况

    Redis实现分布式锁(setnx、getset、incr)以及如何处理超时情况

    本文主要介绍了Redis实现分布式锁(setnx、getset、incr)以及如何处理超时情况,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • redis和redission分布式锁原理及区别说明

    redis和redission分布式锁原理及区别说明

    文章对比了synchronized、乐观锁、Redis分布式锁及Redission锁的原理与区别,指出在集群环境下synchronized失效,乐观锁存在数据库性能瓶颈,而Redission通过watchdog自动续期和Lua原子操作解决Redis锁的超时问题,推荐其在高并发场景下的可靠性与易用性
    2025-08-08

最新评论