如何基于阿里云持久内存实例搭建高性价比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 负载运行环境,希望对大家有所帮助。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
14天前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
18天前
|
存储 缓存 安全
阿里云服务器内存型r7、r8a、r8y、r8i实例区别及选择参考
随着阿里云2024年金秋云创季的开始,目前在阿里云的活动中,属于内存型实例规格的云服务器有内存型r7、内存型r8a、内存型r8y和内存型r8i这几个实例规格,相比于活动内的经济型e和通用算力型u1等实例规格来说,这些实例规格等性能更强,虽然这几个实例规格的云服务器通常处理器与内存的配比为都是1:8,但是他们在处理器、存储、网络、安全等方面等性能并不是一样的,所以他们的适用场景也有着不同。本文为大家介绍内存型r7、r8a、r8y、r8i实例的性能、适用场景的区别以及选择参考。
|
1月前
|
存储 缓存 NoSQL
Redis Quicklist 竟让内存占用狂降50%?
【10月更文挑战第11天】
45 2
|
1月前
|
存储 弹性计算 算法
前端大模型应用笔记(四):如何在资源受限例如1核和1G内存的端侧或ECS上运行一个合适的向量存储库及如何优化
本文探讨了在资源受限的嵌入式设备(如1核处理器和1GB内存)上实现高效向量存储和检索的方法,旨在支持端侧大模型应用。文章分析了Annoy、HNSWLib、NMSLib、FLANN、VP-Trees和Lshbox等向量存储库的特点与适用场景,推荐Annoy作为多数情况下的首选方案,并提出了数据预处理、索引优化、查询优化等策略以提升性能。通过这些方法,即使在资源受限的环境中也能实现高效的向量检索。
|
1月前
|
编解码 Android开发 UED
构建高效Android应用:从内存优化到用户体验
【10月更文挑战第11天】本文探讨了如何通过内存优化和用户体验改进来构建高效的Android应用。介绍了使用弱引用来减少内存占用、懒加载资源以降低启动时内存消耗、利用Kotlin协程进行异步处理以保持UI流畅,以及采用响应式设计适配不同屏幕尺寸等具体技术手段。
51 2
|
2月前
|
分布式计算 大数据 数据挖掘
阿里云服务器计算型c8i、通用型g8i、内存型r8i实例测评与价格参考
阿里云服务器计算型c8i、通用型g8i、内存型r8i实例是阿里云的第八代云服务器实例规格,是除了计算型c7和c8y、通用型g7与g8y、内存型r7与r8y之外同样深受用户喜欢的云服务器实例规格。本文将详细介绍阿里云第八代云服务器中的计算型c8i、通用型g8i、以及内存型r8i实例,包括它们的技术特性、适用场景以及最新的活动价格信息。
阿里云服务器计算型c8i、通用型g8i、内存型r8i实例测评与价格参考
|
1月前
|
存储 机器学习/深度学习 应用服务中间件
阿里云倚天云服务器实例:计算型c8y、通用型g8y、内存型r8y实例介绍
阿里云倚天云服务器是基于阿里云自研的倚天710 ARM架构CPU打造的高性能计算产品系列,它依托先进的第四代神龙架构,旨在为用户提供稳定可预期的超高效能体验。倚天云服务器在存储、网络性能及计算稳定性方面实现了显著提升,主要得益于其芯片级的快速路径加速技术。本文将深度解析阿里云倚天云服务器的计算型c8y、通用型g8y、内存型r8y实例,探讨其优势及适用场景,以供选择参考。
|
1月前
|
运维 JavaScript Linux
容器内的Nodejs应用如何获取宿主机的基础信息-系统、内存、cpu、启动时间,以及一个df -h的坑
本文介绍了如何在Docker容器内的Node.js应用中获取宿主机的基础信息,包括系统信息、内存使用情况、磁盘空间和启动时间等。核心思路是将宿主机的根目录挂载到容器,但需注意权限和安全问题。文章还提到了使用`df -P`替代`df -h`以获得一致性输出,避免解析错误。
|
2月前
|
缓存 监控 NoSQL
阿里面试让聊一聊Redis 的内存淘汰(驱逐)策略
大家好,我是 V 哥。粉丝小 A 面试阿里时被问到 Redis 的内存淘汰策略问题,特此整理了一份详细笔记供参考。Redis 的内存淘汰策略决定了在内存达到上限时如何移除数据。希望这份笔记对你有所帮助!欢迎关注“威哥爱编程”,一起学习与成长。
|
1月前
|
监控 NoSQL Redis
开发者如何使用阿里云Redis
【10月更文挑战第2天】开发者如何使用阿里云Redis
263 0
下一篇
无影云桌面