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

本文涉及的产品
轻量应用服务器 2vCPU 1GiB,适用于搭建电商独立站
轻量应用服务器 2vCPU 4GiB,适用于网站搭建
轻量应用服务器 2vCPU 4GiB,适用于搭建Web应用/小程序
简介: 配备持久内存的实例(例如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


相关文章
|
运维 NoSQL 测试技术
Redis:内存陡增100%深度复盘
本文深度分析了Redis内存陡增100%的一些细节和解决方案。
236 1
Redis:内存陡增100%深度复盘
|
2月前
|
SQL 缓存 安全
深度理解 Java 内存模型:从并发基石到实践应用
本文深入解析 Java 内存模型(JMM),涵盖其在并发编程中的核心作用与实践应用。内容包括 JMM 解决的可见性、原子性和有序性问题,线程与内存的交互机制,volatile、synchronized 和 happens-before 等关键机制的使用,以及在单例模式、线程通信等场景中的实战案例。同时,还介绍了常见并发 Bug 的排查与解决方案,帮助开发者写出高效、线程安全的 Java 程序。
155 0
|
3月前
|
存储 监控 NoSQL
流量洪峰应对术:Redis持久化策略与内存压测避坑指南
本文深入解析Redis持久化策略与内存优化技巧,涵盖RDB快照机制、AOF重写原理及混合持久化实践。通过实测数据揭示bgsave内存翻倍风险、Hash结构内存节省方案,并提供高并发场景下的主从复制冲突解决策略。结合压测工具链构建与故障恢复演练,总结出生产环境最佳实践清单。
111 9
|
5月前
|
存储 NoSQL Redis
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 + 无锁架构 + EDA架构 + 异步日志 + 集群架构
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 + 无锁架构 + EDA架构 + 异步日志 + 集群架构
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 +  无锁架构 +  EDA架构  + 异步日志 + 集群架构
|
7月前
|
存储 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月前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
580 26
|
9月前
|
NoSQL 算法 Redis
redis内存淘汰策略
Redis支持8种内存淘汰策略,包括noeviction、volatile-ttl、allkeys-random、volatile-random、allkeys-lru、volatile-lru、allkeys-lfu和volatile-lfu。这些策略分别针对所有键或仅设置TTL的键,采用随机、LRU(最近最久未使用)或LFU(最少频率使用)等算法进行淘汰。
255 5
|
9月前
|
开发框架 .NET PHP
网站应用项目如何选择阿里云服务器实例规格+内存+CPU+带宽+操作系统等配置
对于使用阿里云服务器的搭建网站的用户来说,面对众多可选的实例规格和配置选项,我们应该如何做出最佳选择,以最大化业务效益并控制成本,成为大家比较关注的问题,如果实例、内存、CPU、带宽等配置选择不合适,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文将详细解析企业在搭建网站应用项目时选购阿里云服务器应考虑的一些因素,以供参考。
|
2月前
|
存储
阿里云轻量应用服务器收费标准价格表:200Mbps带宽、CPU内存及存储配置详解
阿里云香港轻量应用服务器,200Mbps带宽,免备案,支持多IP及国际线路,月租25元起,年付享8.5折优惠,适用于网站、应用等多种场景。
724 0
|
2月前
|
存储 缓存 NoSQL
内存管理基础:数据结构的存储方式
数据结构在内存中的存储方式主要包括连续存储、链式存储、索引存储和散列存储。连续存储如数组,数据元素按顺序连续存放,访问速度快但扩展性差;链式存储如链表,通过指针连接分散的节点,便于插入删除但访问效率低;索引存储通过索引表提高查找效率,常用于数据库系统;散列存储如哈希表,通过哈希函数实现快速存取,但需处理冲突。不同场景下应根据访问模式、数据规模和操作频率选择合适的存储结构,甚至结合多种方式以达到最优性能。掌握这些存储机制是构建高效程序和理解高级数据结构的基础。
209 0

热门文章

最新文章