在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 上也应该大部分适用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

世优科技获新锐商业价值奖,数字人阿央入选北京市元宇宙“名人”

2024全球经济大会元宇宙创新发展论坛暨2024第九届“创客中国”元宇宙中小企业创新创业大赛,由工业和信息化部网络安全产业发展中心、北京市经济和信息化局、石景山区人民政府、首钢集团有限公司主办,围绕元宇宙底层技术端和产业应用端两个方向&#xff0…

Polar Si9000软件详细使用教程

Polar Si9000软件是一款简单易用的阻抗计算神器,文本详细介绍该软件的使用。 一、安装 网上很多安装包,这里不赘述,需要注意的是,如果要希望使用中文版,需要在如下路径中放入简体中文配置文件(PJ包一般会有…

C++和Python蚂蚁搬食和蚊虫趋光性和浮标机群行为算法神经网络

🎯要点 🎯机器人群行为配置和C行为实现:🖊脚底机器人狭隘空间导航避让障碍物行为 | 🖊脚底机器人使用摄像头耦合共振,实现同步动作 | 🖊脚底机器群使用相机,计算彼此间“分子间势能…

数据库性能优化系统设计

设计一个数据库性能优化系统,目标是监测、诊断并改善数据库的运行效率,确保系统能够高效稳定地处理大量数据请求。以下是一个概要设计,包括关键模块、功能和实现思路: 1. 系统架构 分布式监控中心:采用分布式架构收集…

码云远程仓库, 回滚到指定版本号

1. 打开项目路径, 右击Git Bash Here 2. 查找历史版本 git reflog 3. 回退到指定版本 git reset --hard 版本号 4. 强制推送到远程 git push -f

如何在 PostgreSQL 中实现数据的增量备份和恢复?

文章目录 一、增量备份的原理二、准备工作(一)环境配置(二)创建测试数据库和表(三)插入初始数据 三、全量备份四、基于时间点的增量备份(一)开启 WAL 归档(二&#xff09…

继承(上):基类和派生类对象赋值转换,继承中的作用域,派生类的默认成员函数

1.继承的概念及定义 1.1继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保 持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象 程序设计的…

PostgreSQL 如何解决数据迁移过程中的数据类型不匹配问题?

文章目录 一、了解常见的数据类型不匹配情况1. 整数类型差异2. 浮点数类型差异3. 字符类型差异4. 日期和时间类型差异 二、解决数据类型不匹配的一般策略1. 数据转换2. 调整数据库表结构3. 数据清洗和预处理 三、PostgreSQL 中的数据类型转换函数1. 数值类型转换2. 字符类型转换…

数据结构(一)C语言补

数据结构 内存空间划分 一个进程启动后,会生成4G的内存空间 0~3G是用户空间(应用层) 3~4G是内核空间(底层) 0~3G 3~4G 所有的进程都会共享3G~4G的内核空间, 但是每个进程会独立拥有0~3G的用户空间。 栈区 存放数据特点 栈区存放数据的申请空间的先后…

算法:[动态规划] 斐波那契数列模型

目录 题目一:第 N 个泰波那契数 题目二:三步问题 题目三:最小花费爬楼梯 题目四:解码方法 题目一:第 N 个泰波那契数 泰波那契序列 Tn 定义如下: T0 0, T1 1, T2 1, 且在 n > 0 的条件下 Tn3 …

水冷液冷负载系统的六种基本类型

您可以选择六种基本类型的冷却系统,以满足负载的冷却需求。每个人都有其优点和缺点。本文旨在识别不同类型的冷却系统并确定它们的优缺点,以便您可以根据自己的需求做出明智的选择。 液体冷却系统有六种基本类型: 1.液对液 2.闭环干燥系统…

HackTheBox--Headless

Headless测试过程 1 信息收集 NMAP端口扫描 nmap -sSCV 10.10.11.85000端口测试 检查页面功能,请求 For questions 功能,跳转到 /support 目录 目录扫描 发现 /dashboard 目录 访问 /dashboard 目录,显示未认证,如果通过认证…

git杂记

git 安装: 在 Windows 上安装 Git 也有几种安装方法。 官方版本可以在 Git 官方网站下载。 打开 https://git-scm.com/download/win,下载会自动开始。 要注意这是一个名为 Git for Windows 的项目(也叫做 msysGit),和…

高薪程序员必修课-JVM创建对象时如何解决多线程内存抢占问题

前言 在JVM中,堆的内存分配过程涉及到线程安全性的保障,具体来说涉及到对象的内存分配时,并不是简单的抢占式分配,而是通过一些机制来保证线程安全和高效的内存管理。下面解释一下JVM是如何设计来保证线程安全的: 内存…

Go语言---接口interface、接口转换、继承、类型查询

接口(interface)概念 在 Go 语言中,接口(interface)是一个自定义类型,接口类型具体描述了一系列方法的集合。 接口又称为动态数据类型,在进行接口使用的的时候,会将接口对位置的动态类型改为所指向的类型,会将动态值改成所指向类…

Kafka抛弃Zookeeper后如何启动?

Kafaka如何下载 官网地址 目前Kafka最新的版本就是3.7.1 我们可以看到下面这两个版本信息?什么意思呢? Scala 2.12 - kafka_2.12-3.7.1.tgz (asc, sha512)Scala 2.13 - kafka_2.13-3.7.1.tgz (asc, sha512) 我们应该知道,一个完整的Kafka实…

塑料法兰的标准

塑料法兰的标准包括国标GB/T9112-2010、化工部标准HG5010-52~HG5028-58、机械部标准JB81-59~JB86-59、以及船用生活给排水塑料管法兰的标准CB/T 4138-2011和CB/T 4454-2017。这些标准涵盖了从国家标准到特定用途(如船用)的详细规范…

KVM把新添加的磁盘扩容到根目录

1、对新增的磁盘进行分区(注:可省略) PS:使用fdisk或gdisk(大于2T时使用)对新增磁盘进行分区。 [rootkvm-clinet ~]# fdisk/dev/sdb Welcome to fdisk (util‐linux 2.23.2).4 Changes will remain in …

Python28-8 GBM梯度提升算法

梯度提升算法(Gradient Boosting Machine,GBM)是一种集成学习方法,通过逐步构建一系列简单模型(通常是决策树),并结合这些模型来提高整体预测性能。GBM广泛用于回归和分类任务,因为它…

【计算机毕业设计】017基于微信小程序的学生公寓电费信息管理系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…