【实用教程】在配备持久内存的实例上部署Redis应用

简介:配备持久内存的实例(例如re7p、r7p、re6p)提供了超大CPU内存配比,Redis应用运行在这类实例上可以大幅度降低单GiB内存的成本。本文以部分操作系统为例,介绍如何在这类实例上快速部署Redis应用。

配备持久内存的实例(例如re7p、r7p、re6p)提供了超大CPU内存配比,Redis应用运行在这类实例上可以大幅度降低单GiB内存的成本。本文以部分操作系统为例,介绍如何在这类实例上快速部署Redis应用。

一、背景信息

本文中快速部署Redis应用的步骤适用于特定的实例规格和镜像版本,要求如下:

  • 实例规格:
  • re7p:ecs.re7p.large、ecs.re7p.xlarge、ecs.re7p.2xlarge、ecs.re7p.16large、ecs.re7p.32xlarge
  • r7p:ecs.r7p.large、ecs.r7p.xlarge、ecs.r7p.2xlarge、ecs.r7p.16large、ecs.r7p.32xlarge
  • re6p:ecs.re6p-redis.large、ecs.re6p-redis.xlarge、ecs.re6p-redis.2xlarge、ecs.re6p-redis.4xlarge、ecs.re6p-redis.13xlarge
    说明 如需使用ecs.re6p-redis.4xlarge,可以点击链接提交工单,获得相关帮助。
  • 镜像:
  • Alibaba Cloud Linux 2
  • CentOS 7.6及更高版本
  • Ubuntu 18.10及更高版本
  • SUSE Linux 12 SP4及更高版本

二、在Alibaba Cloud Linux 2中部署Redis应用

Alibaba Cloud Linux 2针对Redis应用进行了专项调优,相比社区版操作系统,Redis应用整体性能提升20%以上。

Alibaba Cloud Linux 2内置Redis 6.0.5和Redis 3.2.12的yum源,执行yum install命令即可部署Redis 6.0.5和Redis 3.2.12。您也可以手动部署其他版本的Redis应用,具体操作,请参见在CentOS中部署Redis应用和在Ubuntu中部署Redis应用。

本步骤中相关资源的配置如下:

  • 实例规格:ecs.re6p-redis.2xlarge
  • 镜像:Alibaba Cloud Linux 2.1903 LTS 64位
  1. 购买持久内存实例。具体操作,请参见使用向导创建实例。请注意以下配置:
  • 实例:单击x86计算架构下的内存型分类,并选中名称为ecs.re6p-redis.2xlarge的实例规格。
  • 镜像:选择Alibaba Cloud Linux 2.1903 LTS 64位。
  1. 登录实例。具体操作,请参见连接方式概述。
  2. 根据需要部署Redis 6.0.5或Redis 3.2.12。
  • 部署Redis 6.0.5:
yum install -y alinux-release-experimentals && \
yum install -y redis-6.0.5
  • 部署Redis 3.2.12:
yum install -y alinux-release-experimentals && \
yum install -y redis-3.2.12
  1. 启动Redis应用(配置默认使用的普通内存和持久内存容量)。示例命令如下:
  • 普通内存与持久内存的推荐配比为1:4。
export MEMKIND_DAX_KMEM_NODES=1 && \
redis-server /etc/redis.conf --port 8369 --memory-alloc-policy ratio --dram-pmem-ratio 1 4 --hashtable-on-dram yes --daemonize yes --logfile /tmp/redis_8369.log --protected-mode no --bind 0.0.0.0
  • 您也可以自定义普通内存与持久内存的配比,保留部分普通内存以运行其他应用,例如配比为1:16、分配内存34 GiB(其中普通内存2 GiB、持久内存32 GiB)。
export MEMKIND_DAX_KMEM_NODES=1 && \
redis-server /etc/redis.conf --port 8369 --memory-alloc-policy ratio --dram-pmem-ratio 1 16 --maxmemory 34G

三、在CentOS中部署Redis应用

本步骤中相关资源和软件的配置如下:

  • 实例规格:ecs.re6p-redis.2xlarge
  • 镜像:CentOS 7.6
  • Redis:Redis 4.0.14
  • memkind:memkind 1.10.1-rc2

说明 本步骤中涉及从GitHub(https://github.com/)相关地址下载资源时,请确保下载成功后再进行后续操作。如果下载失败,请重复执行相关命令直至下载成功。

  1. 购买持久内存实例。具体操作,请参见使用向导创建实例。请注意以下配置:
  • 实例:单击x86计算架构下的内存型分类,并选中名称为ecs.re6p-redis.2xlarge的实例规格。
  • 镜像:选择CentOS 7.6 64位。
  1. 登录实例。具体操作,请参见连接方式概述。
  2. 准备编译环境。
export MEMKIND_DAX_KMEM_NODES=1 && \
yum -y install numactl-devel.x86_64 && \
yum -y groupinstall 'Development Tools'
  1. 准备Redis 4.0.14源码。
wget https://github.com/redis-io/redis/archive/4.0.14.tar.gz && \
wget https://github.com/redis/redis/compare/4.0.14...tieredmemdb:4.0.14-devel.diff -O redis_4.0.14_diff_tieredmemdb.patch && \
tar xzvf 4.0.14.tar.gz && \
cd redis-4.0.14 && \
git apply --ignore-whitespace ../redis_4.0.14_diff_tieredmemdb.patch

  1. 说明 patch用于使能持久内存,不同Redis版本使用的patch不同。更多信息,请参见下载使能持久内存的patch。
  2. 准备memkind源码。memkind是内存管理工具,用于分配管理持久内存。
  1. 下载memkind源码。
wget https://github.com/memkind/memkind/archive/v1.10.1-rc2.tar.gz && \
tar xzvf v1.10.1-rc2.tar.gz && \
mv memkind-1.10.1-rc2/* ./deps/memkind
  1. 可选:调整makefile。
    说明 您可以先运行ldd --version查看glibc版本。如果glibc版本等于或高于2.17,可以跳过以下操作直接开始编译Redis。
cd ./deps/memkind && \
wget https://github.com/memKeyDB/memKeyDB/wiki/files/0001-Use-secure_getenv-when-possible.patch && \
git apply --ignore-whitespace 0001-Use-secure_getenv-when-possible.patch && \
cd /root/redis-4.0.14

  1. 说明 如果patch下载失败,再执行命令时无需包括cd ./deps/memkind && \
  1. 编译安装Redis。
make clean && \
make distclean && \
make MALLOC=memkind -j 4 && \
make install
  1. 启动Redis应用(配置默认使用的普通内存和持久内存容量)。示例命令如下:
  • 普通内存与持久内存的推荐配比为1:4。
redis-server /root/redis-4.0.14/redis.conf --port 8369 --memory-alloc-policy ratio --dram-pmem-ratio 1 4 --hashtable-on-dram yes --daemonize yes --logfile /tmp/redis_8369.log --protected-mode no --bind 0.0.0.0
  • 您也可以自定义普通内存与持久内存的配比,保留部分普通内存以运行其他应用,例如配比为1:16、分配内存34 GiB(其中普通内存2 GiB、持久内存32 GiB)。
redis-server /root/redis-4.0.14/redis.conf --port 8369 --memory-alloc-policy ratio --dram-pmem-ratio 1 16 --maxmemory 34G

四、在Ubuntu中部署Redis应用

本步骤中相关资源和软件的配置如下:

  • 实例规格:ecs.re6p-redis.2xlarge
  • 镜像:Ubuntu 20.04
  • Redis:Redis 6.2.5
  • memkind:memkind 1.10.1-rc2

说明 本步骤中涉及从GitHub(https://github.com/)相关地址下载资源时,请确保下载成功后再进行后续操作。如果下载失败,请重复执行相关命令直至下载成功。

  1. 购买持久内存实例。具体操作,请参见使用向导创建实例。请注意以下配置:
  • 实例:单击x86计算架构下的内存型分类,并选中名称为ecs.re6p-redis.2xlarge的实例规格。
  • 镜像:选择Ubuntu 20.04 64位。
  1. 登录实例。具体操作,请参见连接方式概述。
  2. 准备编译环境。
export MEMKIND_DAX_KMEM_NODES=1 && \
apt update && \
apt -y install git && \
apt install -y libnuma-dev && \
apt install -y numactl
  1. 准备Redis 6.2.5源码。
wget https://download.redis.io/releases/redis-6.2.5.tar.gz && \
wget https://github.com/redis/redis/compare/6.2.5...tieredmemdb:6.2.5-devel.diff -O redis_6.2.5_diff_tieredmemdb.patch && \
tar xzf redis-6.2.5.tar.gz && \
cd redis-6.2.5 && \
git apply --ignore-whitespace ../redis_6.2.5_diff_tieredmemdb.patch

  1. 说明 patch用于使能持久内存,不同Redis版本使用的patch不同。更多信息,请参见下载使能持久内存的patch。
  2. 准备memkind源码。memkind是内存管理工具,用于分配管理持久内存。
  1. 下载memkind源码。
wget https://github.com/memkind/memkind/archive/v1.10.1-rc2.tar.gz && \
tar xzvf v1.10.1-rc2.tar.gz && \
mv memkind-1.10.1-rc2/* ./deps/memkind/
  1. 调整makefile。
    说明 您可以先运行ldd --version查看glibc版本。如果glibc版本等于或高于2.17,可以跳过以下操作直接开始编译Redis。
cd ./deps/memkind && \
wget --no-check-certificate https://github.com/memKeyDB/memKeyDB/wiki/files/0001-Use-secure_getenv-when-possible.patch && \
git apply --ignore-whitespace 0001-Use-secure_getenv-when-possible.patch && \
cd /root/redis-6.2.5

  1. 说明 如果patch下载失败,再执行命令时无需包括cd ./deps/memkind && \
  1. 编译安装Redis。
make clean && \
make distclean && \
make MALLOC=memkind -j 4 && \
make install
  1. 启动Redis应用(配置默认使用的普通内存和持久内存容量)。示例命令如下:
  • 普通内存与持久内存的推荐配比为1:4。
redis-server /root/redis-6.2.5/redis.conf --port 8369 --memory-alloc-policy ratio --dram-pmem-ratio 1 4 --hashtable-on-dram yes --daemonize yes --logfile /tmp/redis_8369.log --protected-mode no --bind 0.0.0.0
  • 您也可以自定义普通内存与持久内存的配比,保留部分普通内存以运行其他应用,例如配比为1:16、分配内存34 GiB(其中普通内存2 GiB、持久内存32 GiB)。
redis-server /root/redis-6.2.5/redis.conf --port 8369 --memory-alloc-policy ratio --dram-pmem-ratio 1 16 --maxmemory 34G

五、下载使能持久内存的patch

替换示例命令中的下载地址以及文件名中对应的版本号即可,例如下载Redis 6.2.5适用的patch的命令如下:

wget https://github.com/redis/redis/compare/6.2.5...tieredmemdb:6.2.5-devel.diff -O redis_6.2.5_diff_tieredmemdb.patch

目前支持的patch的下载地址如下所示:

  • Redis 6.0
  • https://github.com/redis/redis/compare/6.0.9...tieredmemdb:6.0.9-devel.diff
  • https://github.com/redis/redis/compare/6.0.5...tieredmemdb:6.0.5-devel.diff
  • https://github.com/redis/redis/compare/6.0.3...tieredmemdb:6.0.3-devel.diff
  • https://github.com/redis/redis/compare/6.0.0...tieredmemdb:6.0.0-devel.diff
  • Redis 5.0
  • https://github.com/redis/redis/compare/5.0.9...tieredmemdb:5.0.9-devel.diff
  • https://github.com/redis/redis/compare/5.0.2...tieredmemdb:5.0.2-devel.diff
  • https://github.com/redis/redis/compare/5.0.0...tieredmemdb:5.0.0-devel.diff
  • Redis 4.0
  • https://github.com/redis/redis/compare/4.0.14...tieredmemdb:4.0.14-devel.diff
  • https://github.com/redis/redis/compare/4.0.9...tieredmemdb:4.0.9-devel.diff
  • https://github.com/redis/redis/compare/4.0.2...tieredmemdb:4.0.2-devel.diff
  • https://github.com/redis/redis/compare/4.0.0...tieredmemdb:4.0.0-devel.diff
  • Redis 3.0
  • https://github.com/redis/redis/compare/3.2.12...tieredmemdb:3.2.diff

原文链接

本文为阿里云原创内容,未经允许不得转载。 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云贾少天:大规模云服务器高效使用及管理实践

简介:本篇内容分享了大规模云服务器高效使用及管理最佳实践。 2021年10月22日,在云栖大会的《云上运维最佳实践》分论坛,阿里云高级技术专家贾少天发表了主题为“大规模云服务器高效使用及管理最佳实践”的演讲,本篇内容根据他的…

linux烧录文件的格式,制作emmc 烧录文件

量产需要统一使用烧录器烧录, 需要制作统一的 emmc 烧录文件,主要升级步骤如下:工具: ISP tool; winhex ; checksum , mboottnize ; U盘(大于主板 EMMC 大小,mmc大小可以使用mmc size查看)文件: USB 升级文件 MstarUpgrade.bin, mboot.bin, r…

发现新视界——视觉计算将如何改变生产方式

简介:本篇内容将从3个部分为读者介绍关于视觉计算如何改变生产方式,进一步阐述可视化业务方面的挑战及阿里云视觉计算的解决方案与优势。 编者按:在2021年10月举办的云栖大会的《数字孪生&Cloud XR技术助力产研创新论坛》上,…

容器监控指南:三剑客轻松实现 Docker 容器监控

作者 | Milan Mahat在本指南中,我们将学习如何使用 docker-compose 在容器中设置 cAdvisor,将其与 prometheus 连接,并通过 grafana 监控服务器的容器。CAdvisor 是一种流行的工具,用于收集容器的信息。它是 prometheus 和 grafan…

linux内存管理的主要概念是虚拟内存,有关linux内存管理机制的相关内容,linux物理内存和虚拟内存,深入了解Linux内存运行 ......

在linux中空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然。这是Linux内存管理的一个优秀特性,区别于Windows的内存管理。主要特点:无论物理内存有多大,Linux 都将其充份利用&…

N个技巧,编写更高效 Dockerfile|云效工程师指北

简介:云原生时代下软件的构建和部署离不开容器技术。提到容器,几乎大家下意识都会联想到 Docker 。而 Docker 中有两个非常重要的概念,一个是Image(镜像),一个是Container(容器)。前…

TDA-04D8变送器数据上报阿里云

简介:本文将以TDA-04D8变送器作为采集对象,使用海创微联采集控制系统对TDA-04D8变送器进行采集,然后将设备上的毛重、净重、皮重数据采集上传到阿里云物联网平台,阿里云物联网平台将数据实时可视化。 文章分为3部分: …

http ,怎么优雅的拒绝你

作者 | 奇伢来源 | 奇伢云存储典型问题:服务端优雅的拒绝今天分享一个后端编程的实际经验。这个问题来源于对象 S3 后端协议实现的技巧思考。场景:服务端不想接收 http 的 body 的时候,该怎么优雅的拒绝呢?什么意思?对…

linux iio 设备驱动,Linux设备驱动之IIO子系统——IIO框架数据读取-Go语言中文社区...

IIO DATA ACCESS IIO数据获取只有两种方法可以使用IIO框架访问数据; 通过sysf通道进行一次性捕获,或通过IIO字符设备进行连续模式(触发缓冲)。One-shot capture:单次获取一次性数据捕获通过sysfs接口完成。 通过读取与通道对应的sysfs条目,您…

企业物联网平台新版公共实例升级企业实例教程

简介:2021年7月30日企业物联网平台重磅升级,发布的新版公共实例支持一键升级企业版实例,本文将为大家介绍一键升级教程 一、企业版实例,企业用户首选 企业物联网平台 提供设备上云必备的基础服务,用户无需自建物联网…

【全观测系列】Elasticsearch应用性能监控实践

简介:本文介绍了应用性能监控的应用价值以及解决方案等。 1、什么是全观测? 要了解全观测,我们先看看传统运维存在哪些问题。 数据孤岛,分散在不同部门,分析排查故障困难;多个厂商的多种工具&#xff0c…

Gartner发布当前至2024年的五大隐私趋势

到2024年,全球75%人口的个人数据将得到隐私法规的保护。 供稿 | Gartner 出品 | CSDN云计算 根据Gartner的研究,随着全球隐私法规数量的不断增加,企业机构应关注五项重大隐私趋势,以应对保护个人数据和遵守监管要求方面的挑战。 …

linux下qt生成可安装的程序,linux – 如何为Qt应用程序创建“安装”包?

您可以从项目中创建debian包.据我所知,你想创建一个用于分发的包,所以我建议你从你的项目中创建一个debian包.Here是Debian Packaging系统的介绍.在文章中,他们在某些时候描述了如何创建一个“规则”文件,它是构建过程的核心.以下是我通常用于Qt / KDE项目的示例:#!…

es实战-使用IK分词器进行词频统计

简介:通过IK分词器分词并生成词云。 本文主要介绍如何通过 IK 分词器进行词频统计。使用分词器对文章的词频进行统计,主要目的是实现如下图所示的词云功能,可以找到文章内的重点词汇。后续也可以对词进行词性标注,实体识别以及对…

IC Nansha|AMD高级副总裁、大中华区总裁潘晓明:制程、架构、平台优化突破计算边界

6月25日,中国南沙国际集成电路产业论坛在广州南沙顺利举行。AMD高级副总裁、大中华区总裁潘晓明出席了本次会议,并在高峰论坛环节中以《高性能计算的未来》为主题发表了演讲。 (AMD高级副总裁、大中华区总裁 潘晓明) 作为一家深耕…

linux 输出后面几列内容,Linux下使用awk如何获取关键字所在字段号,第几列,以及打印这个字段之后的所有字段?...

netstat 的原始结果如下:[rootTest tmp]# netstat -tunp| grep ESTABLISHEDtcp 0 0 10.251.101.163:6379 10.251.101.163:51602 ESTABLISHED 2115/redis-server 1tcp 0 0 127.0.0.1:58657 127.0.0.1:3306 ESTABLISHED 13354/rpc_time_servtcp 0 0 10.251.101.163:52…

nltkdata路径设置linux,NLTK data路径设置

安装nltk后用这个命令:from nltk.book import *按照正常的,应该出现以下:>>> from nltk.book import **** Introductory Examples for the NLTK Book ***Loading text1, ..., text9 and sent1, ..., sent9Type the name of the text…

爱数SMART 2022峰会开启,分享数据战略与建设数据驱动型组织方法论

6月28日,爱数SMART 2022线上峰会全球直播正式开启。主论坛上,爱数正式提出了企业制定数据战略以及建设数据驱动型组织的方法论,并推出开源计划与数字伙伴计划2.0,共创数据驱动型组织。 通过清晰的数据战略,从容加速数据…

云原生时代开发者工具变革探索与实践

简介:本篇内容分享了原生时代开发者工具变革探索与实践。 分享人:马洪喜 行云创新CEO 正文:本篇内容将通过三个部分来介绍云原生时代开发者工具变革探索与实践。 一、云原生模块化开发概览 二、软件模块化开发特点 三、ADD产品简介 一、…

喜马拉雅 Apache RocketMQ 消息治理实践

简介:本文通过喜马拉雅的RocketMQ治理实践分享,让大家了解使用消息中间件过程中可能遇到的问题,避免实战中踩坑。 作者:曹融,来自喜马拉雅,从事微服务和消息相关中间件开发。 本文通过喜马拉雅的RocketMQ治…