在Ubuntu 16.04上安装和配置Redis的方法

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 在Ubuntu 16.04上安装和配置Redis的方法

简介

Redis 是一个内存中的键值存储,以其灵活性、性能和广泛的语言支持而闻名。在本指南中,我们将演示如何在 Ubuntu 16.04 服务器上安装和配置 Redis。

先决条件

要完成本指南,您需要访问 Ubuntu 16.04 服务器。您需要一个具有 sudo 权限的非根用户,以执行此过程所需的管理功能。您可以按照我们的 Ubuntu 16.04 初始服务器设置指南来了解如何设置具有这些权限的帐户。

当您准备好开始时,请使用您的 sudo 用户登录到 Ubuntu 16.04 服务器并继续以下操作。

安装构建和测试依赖项

为了获得 Redis 的最新版本,我们将从源代码编译和安装软件。在下载代码之前,我们需要满足构建依赖项,以便编译软件。

为此,我们可以从 Ubuntu 存储库安装 build-essential 元包。我们还将下载 tcl 包,这样我们就可以测试我们的二进制文件。

我们可以通过输入以下命令来更新本地的 apt 包缓存并安装依赖项:

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

下载、编译和安装 Redis

接下来,我们可以开始构建 Redis。

下载并解压源代码

由于我们不需要长期保留我们将要编译的源代码(我们可以随时重新下载它),我们将在 /tmp 目录中构建。让我们现在切换到那里:

cd /tmp

现在,下载最新稳定版本的 Redis。这始终可在稳定的下载 URL 上找到:

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

通过输入以下命令解压 tarball:

tar xzvf redis-stable.tar.gz

进入刚刚提取的 Redis 源目录结构:

cd redis-stable

构建和安装 Redis

现在,我们可以通过输入以下命令来编译 Redis 二进制文件:

make

在编译二进制文件后,运行测试套件以确保一切都构建正确。您可以通过输入以下命令来执行此操作:

make test

这通常需要几分钟才能运行。完成后,您可以通过输入以下命令将二进制文件安装到系统中:

sudo make install

配置 Redis

现在 Redis 已安装,我们可以开始配置它。

首先,我们需要创建一个配置目录。我们将使用传统的 /etc/redis 目录,可以通过输入以下命令来创建:

sudo mkdir /etc/redis

现在,复制 Redis 源存档中包含的示例 Redis 配置文件:

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

接下来,我们可以打开文件以调整配置中的一些项目:

sudo nano /etc/redis/redis.conf

在文件中,找到 supervised 指令。当前,此项设置为 no。由于我们正在运行使用 systemd init 系统的操作系统,我们可以将其更改为 systemd

. . .
# 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 目录,稍后我们将在其中创建:

. . .
# 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 systemd 单元文件

接下来,我们可以创建一个 systemd 单元文件,以便 init 系统可以管理 Redis 进程。

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

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

在文件中,我们可以在 [Unit] 部分开始添加描述,并定义一个要求,在启动此服务之前网络必须可用:

[Unit]
Description=Redis 内存数据存储
After=network.target

[Service] 部分,我们需要指定服务的行为。出于安全考虑,我们不应该以 root 用户身份运行服务。我们应该使用一个专门的用户和组,我们将简单地称之为 redis。我们将立即创建这些。

要启动服务,我们只需要调用 redis-server 二进制文件,指向我们的配置。要停止它,我们可以使用 Redis 的 shutdown 命令,可以用 redis-cli 二进制文件执行。此外,由于我们希望 Redis 在可能的情况下从故障中恢复,我们将 Restart 指令设置为 “always”:

[Unit]
Description=Redis 内存数据存储
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 目标(配置为在启动时启动):

[Unit]
Description=Redis 内存数据存储
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 用户、组和目录

现在,我们只需创建在前两个文件中引用的用户、组和目录。

首先创建 redis 用户和组。可以通过输入以下命令一次性完成:

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

现在,我们可以通过输入以下命令创建 /var/lib/redis 目录:

sudo mkdir /var/lib/redis

我们应该让 redis 用户和组拥有此目录的所有权:

sudo chown redis:redis /var/lib/redis

调整权限,以便普通用户无法访问此位置:

sudo chmod 770 /var/lib/redis

启动和测试 Redis

现在,我们准备启动 Redis 服务器。

启动 Redis 服务

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

sudo systemctl start redis

通过运行以下命令检查服务是否没有错误:

sudo systemctl status redis

您应该看到类似于以下内容:

● redis.service - Redis 服务器
   Loaded: loaded (/etc/systemd/system/redis.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2016-05-11 14:38:08 EDT; 1min 43s ago
  Process: 3115 ExecStop=/usr/local/bin/redis-cli shutdown (code=exited, status=0/SUCCESS)
 Main PID: 3124 (redis-server)
    Tasks: 3 (limit: 512)
   Memory: 864.0K
      CPU: 179ms
   CGroup: /system.slice/redis.service
           └─3124 /usr/local/bin/redis-server 127.0.0.1:6379       
. . .

测试 Redis 实例功能

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

redis-cli

在随后的提示符中,通过输入以下内容测试连接:

ping

您应该看到:

PONG

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

set test "It's working!"
OK

现在,通过输入以下内容检索值:

get test

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

"It's working!"

退出 Redis 提示符返回到 shell:

exit

作为最后的测试,让我们重新启动 Redis 实例:

sudo systemctl restart redis

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

redis-cli
get test

您的键的值仍然可以访问:

"It's working!"

完成后再次返回到 shell:

exit

启用 Redis 开机自启动

如果你的所有测试都通过了,并且你希望在服务器启动时自动启动 Redis,你可以启用 systemd 服务。

要这样做,请输入以下命令:

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

结论

现在你的 Ubuntu 16.04 服务器上应该已经安装并配置了 Redis 实例。要了解更多关于如何保护你的 Redis 安装的信息,请参考我们的《如何在 Ubuntu 14.04 上保护你的 Redis 安装》(从第3步开始)。尽管它是针对 Ubuntu 14.04 编写的,但在 16.04 上也应该大部分适用。


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
8天前
|
Ubuntu 开发工具 git
Ubuntu安装homebrew的完整教程
本文介绍了如何在没有公网的情况下安装 Homebrew。首先访问 Homebrew 官网,然后通过阿里云的镜像克隆安装脚本,并创建普通用户进行安装。接着修改 `install.sh` 文件指向国内镜像,执行安装命令。最后配置环境变量并更换 Homebrew 源为国内镜像,确保安装顺利。
97 50
|
30天前
|
Ubuntu Linux 测试技术
Linux系统之Ubuntu安装cockpit管理工具
【10月更文挑战第13天】Linux系统之Ubuntu安装cockpit管理工具
109 4
Linux系统之Ubuntu安装cockpit管理工具
|
8天前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
23 2
|
19天前
|
存储 缓存 监控
利用 Redis 缓存特性避免缓存穿透的策略与方法
【10月更文挑战第23天】通过以上对利用 Redis 缓存特性避免缓存穿透的详细阐述,我们对这一策略有了更深入的理解。在实际应用中,我们需要根据具体情况灵活运用这些方法,并结合其他技术手段,共同保障系统的稳定和高效运行。同时,要不断关注 Redis 缓存特性的发展和变化,及时调整策略,以应对不断出现的新挑战。
53 10
|
1月前
|
网络协议 Ubuntu 网络安全
|
17天前
|
存储 SQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]
Mysql And Redis基础与进阶操作系列(1)之[MySQL的下载、安装、配置详解步骤及报错对应解决方法]
|
19天前
|
缓存 监控 NoSQL
Redis 缓存穿透的检测方法与分析
【10月更文挑战第23天】通过以上对 Redis 缓存穿透检测方法的深入探讨,我们对如何及时发现和处理这一问题有了更全面的认识。在实际应用中,我们需要综合运用多种检测手段,并结合业务场景和实际情况进行分析,以确保能够准确、及时地检测到缓存穿透现象,并采取有效的措施加以解决。同时,要不断优化和改进检测方法,提高检测的准确性和效率,为系统的稳定运行提供有力保障。
48 5
|
4天前
|
Ubuntu Java
Ubuntu之jdk安装
以下是Ubuntu之jdk安装的详细内容
12 0
|
29天前
|
存储 NoSQL Redis
Redis 配置
10月更文挑战第14天
24 1
|
1月前
|
Kubernetes Ubuntu Docker
从0开始搞K8S:使用Ubuntu进行安装(环境安装)
通过上述步骤,你已经在Ubuntu上成功搭建了一个基本的Kubernetes单节点集群。这只是开始,Kubernetes的世界广阔且深邃,接下来你可以尝试部署应用、了解Kubernetes的高级概念如Services、Deployments、Ingress等,以及探索如何利用Helm等工具进行应用管理,逐步提升你的Kubernetes技能树。记住,实践是最好的老师,不断实验与学习,你将逐渐掌握这一强大的容器编排技术。
116 1