【实用教程】在配备持久内存的实例上部署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
  • Redis 5.0
  • Redis 4.0
  • Redis 3.0


相关文章
|
5月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
1729 8
|
12月前
|
存储 分布式计算 监控
阿里云服务器实例经济型e、通用算力型u1、计算型c8i、通用型g8i、内存型r8i详解与选择策略
在阿里云现在的活动中,可选的云服务器实例规格主要有经济型e、通用算力型u1、计算型c8i、通用型g8i、内存型r8i实例,虽然阿里云在活动中提供了多种不同规格的云服务器实例,以满足不同用户和应用场景的需求。但是有的用户并不清楚他们的性能如何,应该如何选择。本文将详细介绍阿里云服务器中的经济型e、通用算力型u1、计算型c8i、通用型g8i、内存型r8i实例的性能、适用场景及选择参考,帮助用户根据自身需求做出更加精准的选择。
|
7月前
|
存储 机器学习/深度学习 缓存
阿里云九代云服务器怎么样?计算型c9i、通用型g9i、内存型r9i实例介绍
阿里云第9代云服务器主要实例规格包括计算型c9i、通用型g9i、内存型r9i,本文将为大家介绍阿里云九代云服务器中的计算型c9i、通用型g9i、内存型r9i实例的主要性能特点,并分享最新的活动价格信息,以供参考。
721 1
|
9月前
|
存储 缓存 分布式计算
高内存场景必读!阿里云r7/r9i/r8y/r8i实例架构、性能、价格多维度对比
阿里云针对高性能需求场景,一般会在活动中推出内存型r7、内存型r9i、内存型r8y和内存型r8i这几款内存型实例规格的云服务器。相比于活动内的经济型e和通用算力型u1等实例规格,这些内存型实例在性能上更为强劲,尤其适合对内存和计算能力有较高要求的应用场景。这些实例规格的云服务器在处理器与内存的配比上大多为1:8,但它们在处理器架构、存储性能、网络能力以及安全特性等方面各有千秋,因此适用场景也各不相同。本文将为大家详细介绍内存型r7、r9i、r8y、r8i实例的性能、适用场景的区别以及选择参考。
|
10月前
|
存储 分布式计算 安全
阿里云服务器内存型实例怎么选?r7/r8y/r8i实例性能、适用场景与选择参考
在选择阿里云服务器时,针对内存密集型应用和数据库应用,内存型实例因其高内存配比和优化的性能表现,成为了众多用户的热门选择。在目前阿里云的活动中,内存型实例主要有内存型r7、内存型r8y和内存型r8i实例可选。为了帮助大家更好地了解这三款实例的区别,本文将详细对比它们的实例规格、CPU、内存、计算、存储、网络等方面的性能,并附上活动价格对比,以便用户能够全面了解它们之间的不同,以供选择和参考。
|
存储 NoSQL Redis
Docker 部署 Redis
在使用 Docker 部署 Redis 时,为实现数据持久化,需正确挂载容器内的数据目录到宿主机。推荐命令如下: ``` docker run -d --name redis -v /mnt/data/redis:/data -p 6379:6379 redis ``` 该命令将宿主机的 `/mnt/data/redis` 目录挂载到容器的 `/data` 目录,确保 Redis 数据持久化。此路径更通用,适合大多数场景。避免使用不匹配的挂载路径,如 `/var/lib/redis` 或 `/mnt/data/redis` 到非默认目录,以防止数据无法正确持久化。
|
9月前
|
存储 缓存 数据挖掘
阿里云服务器实例选购指南:经济型、通用算力型、计算型、通用型、内存型性能与适用场景解析
当我们在通过阿里云的活动页面挑选云服务器时,相同配置的云服务器通常会有多种不同的实例供我们选择,并且它们之间的价格差异较为明显。这是因为不同实例规格所采用的处理器存在差异,其底层架构也各不相同,比如常见的X86计算架构和Arm计算架构。正因如此,不同实例的云服务器在性能表现以及适用场景方面都各有特点。为了帮助大家在众多实例中做出更合适的选择,本文将针对阿里云服务器的经济型、通用算力型、计算型、通用型和内存型实例,介绍它们的性能特性以及对应的使用场景,以供大家参考和选择。
|
11月前
|
弹性计算 固态存储 ice
阿里云服务器ECS内存型2核16G、4核32G和8核64G配置实例、费用和性能参数表
本文整理了2025年阿里云服务器租赁价格表,涵盖2核16G、4核32G和8核64G配置收费标准。CPU内存比为1:8,提供多种实例规格如ECS内存型r8i、通用算力型u1等。价格由CPU内存、公网带宽及系统盘组成,支持优惠折扣(年付6.7折起)。文中详细列出各配置参考价格、公网带宽与系统盘收费,并对比不同实例规格性能,如Intel Xeon和AMD EPYC处理器系列,帮助用户选择高性价比方案。具体价格以阿里云官网为准。
1494 4
|
存储 编解码 安全
阿里云高性能企业级甄选Intel第八代计算型c8i、通用型g8i和内存型r8i实例简介
计算型c8i、通用型g8i和内存型r8i实例是阿里云推出的高性能企业级甄选Intel第八代云服务器实例,采用CIPU+飞天技术架构,搭载最新的Intel 第五代至强可扩展处理器(代号EMR),性能进一步大幅提升,同时拥有AMX加持的AI能力增强,并在全球范围率先支持TDX机密虚拟机能力,实现了AI增强和全面安全防护的两大特色优势。本文将为您介绍这三个实例规格的性能、适用场景及最新活动价格以及选择指南,以供选择参考。
482 18
|
存储 弹性计算 安全
阿里云服务器实例选择:经济型、通用算力型、计算型、通用型、内存型实例选择参考
当我们通过阿里云的活动购买云服务器会发现,相同配置的云服务器往往有多个不同的实例可选,而且价格差别也比较大,例如同样是4核8G的配置的云服务器,经济型e实例活动价格1595.11元/1年起,通用算力型u1实例要955.58元/1年起,而计算型c8i实例则要2845.81元/1年起,价格差别还是比较大的,因此,阿里云经济型、通用算力型、计算型、通用型、内存型实例云服务器有何差别就是很多新手用户比较关心的问题了,下面小编来为大家简单介绍下它们之间的区别。
910 16

热门文章

最新文章