如何基于阿里云持久内存实例搭建高性价比Redis应用?

简介: 本文将通过分享基于阿里云持久内存实例产品上部署 Redis 的负载实践案例,降低自建 Redis 应用的成本,帮助用户更好地降本增效。

作者:阿里云弹性计算产品专家踏波

本文将通过分享基于阿里云持久内存实例产品上部署 Redis 的负载实践案例,降低自建 Redis 应用的成本,帮助用户更好地降本增效。

什么是 Redis

Redis 是由意大利人 Antirez 开发的键值对(key-value) 数据库。Redis 是“Remote Dictionary Service” 的首字母缩写,它是一个基于内存的,可选持久化的键值对存储系统。

Redis 作为一个高性能、低延时的缓存数据库风靡全球,1ms 的响应延时在数据库圈内一骑绝尘,其根本原因是 Redis 将所有的数据都存放于内存,而内存拥有着磁盘难以比拟的带宽和延时。Redis 被广泛应用在游戏、视频、新闻、导航、金融等各个领域。

Redis 数据库主要有以下几个特点:

  • 内存型数据库
  • 工作模式为单线程
  • 支持多种复杂数据类型
  • 支持数据持久化
  • 支持主从结构

随着互联网及云端数据爆炸式的增加,传统基于 DRAM (普通易失性内存)的部署方式,高昂的成本以及受限的容量逐渐成为 Redis 应用的瓶颈。容量更大,价格更低的新型内存(持久内存介质)逐步走上数据中心领域应用的舞台。

搭建 Redis 对于云服务器的要求

Redis 数据库对内存容量的要求比较高,数据库的瓶颈往往出现在内存容量上,即内存耗光了,而 CPU 的利用率只有 10-20% 不到。所以,搭建 Redis 对于云服务器的内存要求较高,充足的内存容量可以有效地降本增效。

阿里云新推出的持久内存实例产品 Re6p,采用 Intel ®傲腾 TM 持久内存,提供了高达 1:20 的 CPU 内存容量配比(即 8 核新配备了 160G 内存),为 Redis 应用提供专用实例规格 ecs.re6p-redis.large,部署方便简单。

基于 Re6p 五分钟搭建 Redis 应用

image.png

阿里云持久内存型实例 Redis 应用解决方案解构图

Redis 应用直接部署在 Re6p-redis 系列实例上,无需对持久内存进行其他任何初始化操作“开机即用”。

基于开源 Redis 版本部署,注入了冷热数据分层机制(通过专用 patch 包实现—memKeyDB),patch 包完全开源,由 Intel 团队维护。

参考源码:
https://github.com/memKeyDB/memKeyDB

下面将分享某互联网客户基于 Re6p-redis 系列实例的实战经验,如何基于 open source Redis 4.0.14 及对应的 patch,五分钟搭建出基于持久内存的超高性价比 Redis 应用集群。

第一步

启动阿里云 ECS,购买 ecs.re6p-redis.2xlarge 实例规格,选择 ALi Linux2 操作系统,云盘选择 500G PL1 ESSD,并指定系统盘默认为 40GB。

第二步:准备编译环境

设置环境变量:

export MEMKIND_DAX_KMEM_NODES=1

准备编译环境:

yum -y groupinstall 'Development Tools';yum -y install numactl-devel.x86_64

第三步:安装Redis4.0.14

下载 Redis 安装包:

wget https://github.com/redis-io/redis/archive/4.0.14.tar.gz;tar xzvf 4.0.14.tar.gz

安装 patch 包:

wget https://github.com/redis/redis/compare/4.0.14...memKeyDB:4.0.14-devel.diff -O redis_4.0.14_eca56e845aa19d2e79e7c70207e860f8385541f9.patch;cd redis-4.0.14;git apply --ignore-whitespace ../redis_4.0.14_eca56e845aa19d2e79e7c70207e860f8385541f9.patch

安装 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/;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

开始编译安装 Redis4.0.14:

cd /root/redis-4.0.14;make clean;make distclean;make MALLOC=memkind -j 4;make install

第四步:配置网卡多队列(可以发挥出 Redis 的最大性能)

准备脚本:
wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/ecs_mq/ecs_mq_latest.tgz;tar -xzf ecs_mq_latest.tgz;cd ecs_mq/

运行脚本:

bash install.sh <系统名称> <系统主版本号>. (如:bash install.sh centos 7)

启动服务:systemctl start ecs_mq

安装完成,启动 Redis 服务:

启动:

cd /root/redis-4.0.14;redis-server redis.conf --port 6379 --memory-alloc-policy ratio --dram-pmem-ratio 1 8 --maxmemory 36G --hashtable-on-dram yes --daemonize yes --protected-mode no --bind 0.0.0.0

全部完成,运行测试程序测试性能情况:

server 端启动 Redis 服务:

redis-server /root/redis-4.0.14/redis.conf --port 6379 --memory-alloc-policy ratio --dram-pmem-ratio 1 8 --hashtable-on-dram yes --daemonize yes --logfile /tmp/redis_6379.log --protected-mode no --bind 0.0.0.0 --save

client 端运行 Redis-benchmark:

/root/redis-4.0.14/src/redis-benchmark -h server_ip -p 6379 -t get -r 100000000 -n 120000000 -c 64 -d 64 >> ./get_6379.redis

查看测试结果,如下展示了与普通内存型实例的对比测试结果(并行运行了 8 个 thread),可以看到基于持久内存构建的 Redis 应用,性价比有了极大的提升。

image.png

更多 Redis 版本支持请参考官网文档帮助链接:

https://help.aliyun.com/document_detail/188250.html?spm=5176.10695662.1996646101.searchclickresult.183472f1avSvqZ

总结

本文对 Redis 做了简单的介绍,并分享了如何基于 Re6p 搭建高性价比的 Redis 负载运行环境,希望对大家有所帮助。

相关文章
|
6月前
|
存储 缓存 NoSQL
工作 10 年!Redis 内存淘汰策略 LRU 和传统 LRU 差异,还傻傻分不清
小富带你深入解析Redis内存淘汰机制:LRU与LFU算法原理、实现方式及核心区别。揭秘Redis为何采用“近似LRU”,LFU如何解决频率老化问题,并结合实际场景教你如何选择合适策略,提升缓存命中率。
863 3
|
6月前
|
存储 NoSQL Redis
阿里云高性能数据库Tair(兼容 Redis)收费价格,稳定可靠成本低
阿里云高性能云数据库Tair兼容Redis,提供Redis开源版和Tair企业版,支持多种存储介质与灵活扩展,适用于高并发场景。Tair具备亚毫秒级稳定延迟,保障业务连续性。价格方面,Redis开源版年费从72元起,Tair企业版年费从1224元起,具体费用根据配置不同有所变化。
NoSQL 数据可视化 关系型数据库
161 0
|
7月前
|
存储 机器学习/深度学习 缓存
阿里云九代云服务器怎么样?计算型c9i、通用型g9i、内存型r9i实例介绍
阿里云第9代云服务器主要实例规格包括计算型c9i、通用型g9i、内存型r9i,本文将为大家介绍阿里云九代云服务器中的计算型c9i、通用型g9i、内存型r9i实例的主要性能特点,并分享最新的活动价格信息,以供参考。
721 1
|
8月前
|
SQL 缓存 安全
深度理解 Java 内存模型:从并发基石到实践应用
本文深入解析 Java 内存模型(JMM),涵盖其在并发编程中的核心作用与实践应用。内容包括 JMM 解决的可见性、原子性和有序性问题,线程与内存的交互机制,volatile、synchronized 和 happens-before 等关键机制的使用,以及在单例模式、线程通信等场景中的实战案例。同时,还介绍了常见并发 Bug 的排查与解决方案,帮助开发者写出高效、线程安全的 Java 程序。
453 0
|
运维 NoSQL 测试技术
Redis:内存陡增100%深度复盘
本文深度分析了Redis内存陡增100%的一些细节和解决方案。
527 1
Redis:内存陡增100%深度复盘
|
9月前
|
存储 缓存 分布式计算
高内存场景必读!阿里云r7/r9i/r8y/r8i实例架构、性能、价格多维度对比
阿里云针对高性能需求场景,一般会在活动中推出内存型r7、内存型r9i、内存型r8y和内存型r8i这几款内存型实例规格的云服务器。相比于活动内的经济型e和通用算力型u1等实例规格,这些内存型实例在性能上更为强劲,尤其适合对内存和计算能力有较高要求的应用场景。这些实例规格的云服务器在处理器与内存的配比上大多为1:8,但它们在处理器架构、存储性能、网络能力以及安全特性等方面各有千秋,因此适用场景也各不相同。本文将为大家详细介绍内存型r7、r9i、r8y、r8i实例的性能、适用场景的区别以及选择参考。
|
9月前
|
存储 监控 NoSQL
流量洪峰应对术:Redis持久化策略与内存压测避坑指南
本文深入解析Redis持久化策略与内存优化技巧,涵盖RDB快照机制、AOF重写原理及混合持久化实践。通过实测数据揭示bgsave内存翻倍风险、Hash结构内存节省方案,并提供高并发场景下的主从复制冲突解决策略。结合压测工具链构建与故障恢复演练,总结出生产环境最佳实践清单。
352 9
|
9月前
|
存储 缓存 数据挖掘
阿里云服务器实例选购指南:经济型、通用算力型、计算型、通用型、内存型性能与适用场景解析
当我们在通过阿里云的活动页面挑选云服务器时,相同配置的云服务器通常会有多种不同的实例供我们选择,并且它们之间的价格差异较为明显。这是因为不同实例规格所采用的处理器存在差异,其底层架构也各不相同,比如常见的X86计算架构和Arm计算架构。正因如此,不同实例的云服务器在性能表现以及适用场景方面都各有特点。为了帮助大家在众多实例中做出更合适的选择,本文将针对阿里云服务器的经济型、通用算力型、计算型、通用型和内存型实例,介绍它们的性能特性以及对应的使用场景,以供大家参考和选择。

热门文章

最新文章