如何在 Ubuntu 上安装 Redis?

29 Mar 2025 | 7 分钟阅读

Redis 简介

Redis 可以定义为一种数据结构内存存储,用作内存键值数据库、分布式、消息和缓存代理,并提供可选的持久性。它代表远程字典服务器,支持多种抽象数据结构,包括空间索引、流、位图、HyperLogLogs、有序集合、集合、映射、列表和字符串。该项目由 Salvatore Sanfilippo 于 2009 年创建和管理。从 2015 年到 2020 年,他领导了一个由 Redis Labs 批准的核心项目团队。

Redis 是一个开源应用程序,基于 BSD 3 条款许可发布。在实际作者和主要维护者离开后不久,于 2021 年,Redis Labs 放弃了名称中的“Labs”,现在简称为“Redis”

Redis 的历史

Redis 项目始于 Salvatore Sanfilippo,他是 Redis 的实际维护者,当时他正试图通过改进一个实时网站日志分析器来扩展他的意大利初创公司。在用传统数据库系统扩展某些类型的工作负载时遇到严重问题后,Salvatore Sanfilippo 于 2009 年开始用 Tcl 制作 Redis 的第一个概念验证版本原型。

后来他将该原型转换为 C 语言并开发了第一个“列表”数据类型。在内部成功使用该项目几周后,Sanfilippo 决定将其开源,并在 Hacker News 网站上介绍了该项目。该项目开始获得关注,尤其是在 Ruby 社区,Instagram 和 GitHub 是早期采用它的组织之一。

  • 2010 年 3 月,Sanfilippo 被 VMware 聘用。
  • Redis 于 2013 年 5 月被Pivotal Software(VMware 分拆公司)批准。
    2015 年 6 月,Redis Labs 批准了开发。
  • Redis 5.0 版本于 2018 年 10 月发布,推出了 Redis Stream,这是一种数据结构,允许在一个键上存储两个或多个字符串和字段值,并具有基于时间的自动顺序。
  • Salvatore Sanfilippo 于 2020 年 6 月辞去了 Redis 维护者的职务。

Redis 与其他数据库系统的区别

Redis 影响了一种系统思想,可以同时作为缓存和存储。它的开发目的是数据始终从主计算机内存中更改和访问,同时也以一种不适合不规则数据访问的方式保存在磁盘上。这些更改的数据在系统重启时会重新加载到内存中。

此外,Redis 提供的数据模型比 RDBMS 更独特。用户的命令不定义通过数据库引擎运行的查询,而是定义在提供的抽象数据类型上实现的特殊任务。因此,数据必须以一种能够快速恢复的兼容格式保存。

恢复是在没有数据库系统支持的情况下实现的,例如聚合、二级索引或传统 RDBMS 的其他基本方面。Redis 的实现使用 fork 系统调用来复制数据持有进程,因此父进程可以继续管理客户端,而子进程将内存中的数据副本保存在磁盘上。

Redis 支持的语言

自 2.6 版本以来,Redis 提供了 Lua 语言的服务器端脚本功能。在客户端,许多编程语言都包含 Redis 语言绑定,包括 Tcl、Swift、Smalltalk、Scala、Rust、Ruby、Racket、R、Python、Pure Data、PHP、Perl、OCaml、Objective-C、Lua、Julia、JavaScript (Node.js)、Nim、Java、Io、Haxe、Haskell、Go、Erlang、Elixir、Delphi[30]、Dart、D、Crystal、Common Lisp、Clojure Chicken、C#、C++、C 和 ActionScript。这些语言都有各种客户端软件程序。

Redis 的数据类型

Redis 将键映射到值类型。许多结构化存储系统和 Redis 之间的主要区别在于,Redis 不仅支持字符串,还支持抽象数据类型。

  • 字符串列表
  • 字符串的有序集合(由一个称为分数的浮点数排序的非重复元素的集合)
  • 字符串集合(非重复的无序元素集合)
  • HyperLogLogs 自 2014 年 4 月的 Redis 2.8.9 版本以来一直可用,用于估算大型集合的基数大小。
  • 键和值都是字符串的哈希表。
  • 来自 geohash 技术实现的地理空间数据,自 Redis 3.2 版本以来可用。
  • 条目流,使用消费者组,允许我们在一个键上存储两个或多个字符串和字段值,并具有基于时间的自动顺序,自 2018 年 10 月的 Redis 5.0 版本以来可用。

值类型决定了该值可用的操作(称为命令)。Redis 支持服务器端、原子和高级操作,例如集合、有序集合和集合之间的差集、并集和交集。

还支持基于 Redis Modules API 的其他数据类型

  • JSON:RedisJSON 将 ECMA-404 作为一种自然数据类型进行操作。
  • 时间序列:RedisTimeSeries 操作时间序列数据结构。
  • 图:RedisGraph 操作一个可查询属性的图。
  • Top-K、Count-min sketch、Cuckoo filter 和 Bloom filter:RedisBloom 操作一组概率数据结构。

Redis 数据类型的更详细概述

  • 字符串:这是最常见的 Redis 数据类型,表示字节序列。
  • 列表:这是按插入顺序排序的字符串列表。
  • 集合:这些集合是无序的特殊字符串集合,它们像我们首选编程语言中的集合一样运行(例如,Python 集合、Java HashSet 等)。我们可以使用 Redis 集合以 O(1) 的时间复杂度(尽管集合元素总数可能很大)添加、测试和删除元素。
  • 哈希:这些被描述为记录类型,由字段-值对组成。本质上,Redis 哈希模拟了 Ruby 哈希、Java HashMap 和 Python 字典。
  • 有序集合:这些是特殊字符串的集合,它们维护所有关联的分数,用于对字符串进行排序。
  • 流:Redis 流是一种行为类似于追加日志的数据结构。它们有助于按事件出现的顺序记录事件并将它们分发以供处理。
  • 地理空间索引:这些有助于在边界框或地理半径内查找位置。
  • 位图:位图允许我们对字符串实现位运算。
  • 位字段:位字段有效地将两个或多个计数器编码到一个字符串值中。它们提供原子获取、设置和递增操作,并支持多种溢出策略。
  • HyperLogLog:HyperLogLog 是数据结构,它提供对大型集合的基数进行概率评估。
  • 扩展:我们可以使用以下选项来扩展给定数据类型提供的功能
    • 使用模块 API 编写我们自己的 Redis 模块,并通过社区支持的模块。
    • 用 Lua 编写我们自己的服务器端程序。
    • 使用 Redis Stack 提供的功能,如时间序列、查询、JSON 等。

如何保护 Redis?

Redis 绑定到每个接口,并且完全不包含身份验证。如果您在高度受控、与外部互联网和攻击者隔离的环境中使用 Redis,那没关系。但是,如果任何未加固的 Redis 暴露给互联网,那将是一个重大的安全隐患。如果您不能 100% 确定您的环境已正确加固,您可以按照以下步骤获得更安全的 Redis。为增强安全性,以下是一些步骤:

  • 我们需要确保 Redis 用于监听大量连接的端口(默认 6379,Sentinel 为 26379,如果以集群模式运行 Redis,则为 16379)已通过防火墙阻止,以便无法通过外部世界连接到 Redis。
  • 我们可以使用配置文件,其中 `bind` 指令配置为确保 Redis 仅监听我们使用的网络接口,例如,如果您从同一台计算机本地使用 Redis,则使用回环接口。
    我们可以使用 `requirepass` 选项添加额外的安全层,这样用户就需要通过 AUTH 命令进行验证。
  • 如果您的环境需要加密,我们可以使用 spiped 选项或其他 SSL 隧道应用程序来加密 Redis 客户端和 Redis 服务器之间的流量。

请记住,任何暴露给互联网的 Redis 实例在没有安全措施的情况下都非常容易被利用,因此请确保我们遵循上述步骤并使用防火墙层。设置防火墙后,我们可以尝试从任何外部主机连接到 redis-cli 来证明该实例无法访问。

Redis 用户界面

redis-cli(命令行界面)是一个终端函数,用于向 Redis 服务器发送命令并查看回复。它包含两种主要模式:第一种是交互式 REPL(Read Eval Print Loop)模式,用户在此模式下输入 Redis 命令并获得回复;第二种是命令模式,redis-cli 运行带有额外参数,响应显示在标准输出上。

为了让我们能够使用 Redis 部署,RedisInsight 将图形用户界面与 Redis CLI 结合。在视觉上,我们可以浏览和协作数据,通过示例进行理解,利用诊断工具等。

  • Redis CLI:redis-cli,Redis CLI 的摘要。
  • RedisInsight:优化和可视化 Redis 数据。

在 Ubuntu 上安装 Redis

请按照以下步骤在 Ubuntu 上安装 Redis:

首先使用 sudo 设置一个非 root 用户,然后安装构建和测试依赖项


Redis Installation on Ubuntu 1
Redis Installation on Ubuntu 2

按 Y 继续

Redis Installation on Ubuntu 3

安装 Redis 服务器

使用以下命令安装 Redis 服务器


Redis Installation on Ubuntu 4
Redis Installation on Ubuntu 5

现在 Redis 服务器已安装。您可以启动 Redis 服务器


启动 Redis 服务器

使用以下命令启动 redis 服务器


Redis Installation on Ubuntu 6

启动 Redis 客户端

Redis 服务器已启动,因此您可以启动 redis 客户端以在它们之间进行通信。


Redis Installation on Ubuntu 7

验证 Redis 是否正常工作

执行以下命令

这将打开一个 redis 提示符。

redis 127.0.0.1:6379>

在上面的提示符中,127.0.0.1 是机器的 IP 地址,6379 是 Redis 服务器运行的端口。

现在输入以下 PING 命令。

这表明 Redis 已成功安装在您的系统上。

Redis Installation on Ubuntu 8
下一主题Redis 配置