专栏首页云计算教程系列如何在Ubuntu 18.04上安装Redis
原创

如何在Ubuntu 18.04上安装Redis

介绍

Redis是一个内存中的键值存储器,以其灵活性,性能和广泛的语言支持而闻名。它通常用作数据库,缓存和消息代理,并支持各种数据结构。

本教程演示如何在Ubuntu 18.04服务器上从源进行安装和配置Redis。请注意,通过官方Ubuntu存储库下载和安装Redis可以减少安装步骤。

准备

一个Ubuntu 18.04服务器,具有sudo权限的非root用户和防火墙。没有服务器的用户可以购买和使用腾讯云服务器或者直接在腾讯云实验室Ubuntu服务器上直接上机安装Redis。

第一步,安装构建和测试依赖项

为了获得最新版本的Redis,我们将从源代码编译和安装该软件。但是,在下载源代码之前,必须构建依赖项,以便您可以进行软件编译。

请从Ubuntu存储库安装build-essential元数据包。另外,下载可用于测试二进制文件的tcl软件包。

键入以下命令更新本地apt程序包缓存并安装依赖项:

$ sudo apt update
$ sudo apt install build-essential tcl

接下来,您可以开始安装Redis。

第二步,下载、编译和安装Redis

安装依赖项后,您就可以通过下载,编译和构建源代码来安装Redis。由于您不需要长期保留Redis源代码(您可以随时重新下载),因此请将源代码下载到您的/tmp目录中。

首先进入此目录:

$ cd /tmp

接下来,使用curl下载Redis的最新稳定版本。最新版本始终可以在稳定的下载URL找到:

$ curl -O http://download.redis.io/redis-stable.tar.gz

输入以下命令解压缩tarball:

$ tar xzvf redis-stable.tar.gz

然后进入刚刚解压缩的Redis源目录结构:

$ cd redis-stable

输入以下命令编译Redis二进制文件:

$ make

二进制文件完成编译后,运行测试套件以确保所有内容都正确编译:

$ make test

这通常需要几分钟才能完成。测试完成后,输入以下命令将二进制文件安装到系统上:

$ sudo make install

接下来,您需要创建配置目录。Redis配置目录通常位于/etc/目录中,您可以通过输入以下内容来创建它:

$ sudo mkdir /etc/redis

接下来,复制Redis源存档附带的示例Redis配置文件:

$ sudo cp /tmp/redis-stable/redis.conf /etc/redis

使用首选文本编辑器打开文件,对配置进行一些更改:

$ sudo nano /etc/redis/redis.conf

在文件中,找到supervised指令。该指令允许您声明一个init系统来管理Redis作为服务,使您可以更好地控制其操作。该supervised指令默认设置为no。由于您运行的是使用systemd初始化的Ubuntu系统,因此将其更改为systemd

/etc/redis/redis.conf

   . . .
   
   # If you run Redis from upstart or systemd, Redis can interact with your
   # supervision tree. Options:
   #   supervised no      - no supervision interaction
   #   supervised upstart - signal upstart by putting Redis into SIGSTOP mode
   #   supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
   #   supervised auto    - detect upstart or systemd method based on
   #                        UPSTART_JOB or NOTIFY_SOCKET environment variables
   # Note: these supervision methods only signal "process is ready."
   #       They do not enable continuous liveness pings back to your supervisor.
   supervised systemd
   
   . . .

接下来,找该dir指令。此选项指定Redis将用于转储持久数据的目录。您需要将其更改为Redis具有写权限且普通用户无法查看的位置。

使用/var/lib/redis目录; 您将在第4步中创建此目录并调整其权限:

/etc/redis/redis.conf

. . .

# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir /var/lib/redis

. . .

完成后保存并关闭文件,接下来,我们将Redis配置为作为服务运行并创建其专用用户和组。

第三步,创建Redis systemd单元文件

为了更好地控制Redis的管理方式,您可以创建一个systemd单元文件,使其可以作为systemd服务。这样做的好处是可以服务器启动时启动Redis。

创建并打开/etc/systemd/system/redis.service文件:

$ sudo nano /etc/systemd/system/redis.service

进入后,通过添加服务描述并定义网络要求来启动Unit:

/etc/systemd/system/redis.service

[Unit]
Description=Redis In-Memory Data Store
After=network.target

Service部分用来指定服务行为。出于安全考虑,您不应以root用户身份运行此服务。您应该使用专用的用户和组。

要启动该服务,只需调用redis-server二进制文件并将其指向您的配置即可。要停止该服务,请使用Redis

shutdown命令,您可以使用redis-cli二进制文件执行该命令。此外,由于我们更希望在出现故障的时候Redis可以尽快的恢复,因此我们将Restart指令设置为always

/etc/systemd/system/redis.service

[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always

最后,添加一个Install部分。定义应该附加到服务上的systemd目标(如果它已启用):

/etc/systemd/system/redis.service

[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always

[Install]
WantedBy=multi-user.target

完成后保存并关闭文件。

Redis systemd单元文件已全部设置。但是,在它可以投入使用之前,您必须创建在该Service部分中引用的专用用户和组,并授予它们运行所需的权限。

第四步, 创建Redis用户,组和目录

在开始和测试Redis之前,您需要做的最后一件事是创建在前两个文件中引用的用户,组和目录。

首先创建redis用户和组。您可以通过输入以下命令在单个命令中执行此操作

$ sudo adduser --system --group --no-create-home redis

接下来,输入以下命令创建/var/lib/redis目录(redis.conf在步骤2中创建的文件中引用):

$ sudo mkdir /var/lib/redis

为此目录授予redis用户和组所有权:

$ sudo chown redis:redis /var/lib/redis

最后,调整权限,阻止普通用户访问此位置:

$ sudo chmod 770 /var/lib/redis

现在我们可以启动Redis服务并测试其功能。

第五步,启动和测试Redis

输入以下命令启动systemd服务:

$ sudo systemctl start redis

运行以下命令检查服务有没有错误:

$ sudo systemctl status redis

这将产生类似于以下的输出:

● redis.service - Redis In-Memory Data Store
   Loaded: loaded (/etc/systemd/system/redis.service; disabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-05-29 17:49:11 UTC; 4s ago
 Main PID: 12720 (redis-server)
    Tasks: 4 (limit: 4704)
   CGroup: /system.slice/redis.service
           └─12720 /usr/local/bin/redis-server 127.0.0.1:6379
. . .

要测试您的服务是否正常运行,请使用命令行客户端连接到Redis服务器:

$ redis-cli

在随后的提示中,键入以下内容来测试连接:

127.0.0.1:6379> ping

这将返回:

PONG

接下来,通过输入以下内容检查是否可以设置键:

127.0.0.1:6379> set test "It's working!"
OK

键入以下内容检索test值:

127.0.0.1:6379> get test

您应该能够检索存储的值:

"It's working!"

确认您可以获取该值后,退出Redis提示符,返回到shell:

127.0.0.1:6379> exit

作为最终测试,我们将检查Redis是否能够在数据被停止或重新启动后保留数据。要执行此操作,请首先重新启动Redis实例:

$ sudo systemctl restart redis

然后再次与客户端连接并确认您的测试值仍然可用:

$ redis-cli
127.0.0.1:6379> get test

您的密钥值仍应该可以访问:

"It's working!"

完成后再次退出shell:

127.0.0.1:6379> exit

假设所有这些测试都有效并且您希望在服务器引导时自动启动Redis,请启用systemd服务:

$ sudo systemctl enable redis
Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /etc/systemd/system/redis.service.

至此,您的Redis安装可完全运行。

结论

在本教程中,您从其源代码安装,编译和构建Redis,将其配置为作为systemd服务运行,并验证Redis安装是否正常运行。如果对Redis感兴趣的用户,可以参考腾讯云开发者手册Redis中文开发文档


参考文献:《How To Install Redis from Source on Ubuntu 18.04》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何在Ubuntu 14.04上备份和还原Redis数据

    Redis是一个键值缓存的数据库,它可以持久保存(永久保存)到磁盘存储(即数据库)中。在本文中,您将了解如何在Ubuntu 14.04服务器上备份Redis数据...

    吴凌云
  • 如何在CentOS 7上使用Docker安装Prometheus

    Prometheus是一个开源监控系统和时间序列数据库。它涉及监控的许多方面,例如度量标准的生成和收集,在仪表板上绘制结果数据以及针对异常情况发出警报。为实现这...

    吴凌云
  • 最全的CentOS MariaDB入门教程

    MariaDB是流行的跨平台MySQL数据库管理系统的分支,被认为是MySQL 的完全替代品。MariaDB是由Sun在Sun Microsystems合并期间...

    吴凌云
  • 基于PhalApi的Redis拓展

    #基于PhalApi的Redis拓展 ? ##前言## 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架. 编写本次拓展...

    喵了个咪233
  • Redis4.0.1安装以及主从复制详解

    Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(...

    Javen
  • Spring Boot集成Redis

    “ 在昨天我们讲解了如何在Linux上部署Redis,那么今天我们来看一看Spring Boot如何集成Redis。”

    每天学Java
  • Redis简介及3.0.2编译安装

    Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(...

    用户3003813
  • redis 6源码解析之 object

    redis对象作为redis存储的基本单元,对应redisDb->dict 中的dictEntry->key和dictEntry->val。

    charlieroro
  • linux下安装配置redis服务

             最近项目需要用到redis缓存及集群技术,故自己在工作之余抽空研究了一把,其实网上关于redis的安装配置的文章有很多,但总感觉写得不是很完整...

    拓荒者
  • Spring Boot Redis 数据缓存

    之前都是在Spring MVC中使用Redis,这里记录在Spring Boot中使用Redis作为数据缓存的过程。参考Spring Boot集成Spring ...

    用户2146693

扫码关注云+社区

领取腾讯云代金券