当前位置:主页 > 查看内容

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

发布时间:2021-07-02 00:00| 位朋友查看

简介:作者:阿里云弹性计算产品专家踏波 本文将通过分享基于阿里云持久内存实例产品上部署 Redis 的负载实践案例,降低自建 Redis 应用的成本,帮助用户更好地降本增效。 什么是 Redis Redis 是由意大利人 Antirez 开发的键值对(key-value) 数据库。Redis 是“Rem……

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

本文将通过分享基于阿里云持久内存实例产品上部署 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 负载运行环境,希望对大家有所帮助。


本文转自网络,原文链接:https://developer.aliyun.com/article/785002
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文

  • 周排行
  • 月排行
  • 总排行

随机推荐