Instâncias com memória persistente, como re7p, r7p e re6p-redis, oferecem alta proporção de CPU para memória. Isso permite executar aplicativos Redis com custo por GiB de memória muito menor. Este tópico descreve como implantar rapidamente aplicativos Redis nessas instâncias em diversos sistemas operacionais.
re7p, r7p,
Informações básicas
As etapas de implantação rápida de aplicativos Redis deste tópico aplicam-se a tipos de instância e versões de imagem específicos. Os requisitos são:
Tipo de instância: ecs.re6p-redis.large, ecs.re6p-redis.xlarge, ecs.re6p-redis.2xlarge, ecs.re6p-redis.4xlarge, ecs.re6p-redis.13xlarge
-
Versões de imagem
Alibaba Cloud Linux 2
CentOS 7.6 ou posterior
Ubuntu 18.04 e 20,04
Implantar aplicativos Redis no Alibaba Cloud Linux 2
O Alibaba Cloud Linux 2 é otimizado especificamente para aplicativos Redis. Ele melhora o desempenho geral desses aplicativos em mais de 20% em comparação aos sistemas operacionais da comunidade.
O Alibaba Cloud Linux 2 inclui fontes yum integradas para Redis 6.0.5 e Redis 3.2.12. Execute o comando sudo yum install para implantar essas versões. Também é possível implantar manualmente outras versões do Redis. Para obter mais informações, consulte Implantar aplicativos Redis no CentOS e Implantar aplicativos Redis no Ubuntu.
Os recursos nesta seção têm a seguinte configuração:
Tipo de instância: ecs.re6p-redis.2xlarge
Imagem: Alibaba Cloud Linux 2.1903 LTS 64 bits
-
Adquira uma instância de memória persistente.
Para obter mais informações, consulte Criar uma instância personalizada. Observe as seguintes configurações:
Instance: Na arquitetura x86-Compute, clique em Memory-optimized Type e selecione o tipo de instância ecs.re6p-redis.2xlarge.
Images: Selecione Alibaba Cloud Linux 2.1903 LTS 64-bit.
-
Faça login na instância.
Para obter mais informações, consulte Métodos de conexão.
-
Implante o Redis 6.0.5 ou Redis 3.2.12 conforme necessário.
-
Para implantar o Redis 6.0.5:
sudo yum install -y alinux-release-experimentals && \ sudo yum install -y redis-6.0.5 -
Para implantar o Redis 3.2.12:
sudo yum install -y alinux-release-experimentals && \ sudo yum install -y redis-3.2.12
-
-
Inicie o aplicativo Redis e configure a capacidade de DRAM e memória persistente.
Exemplos de comandos:
-
A proporção recomendada de DRAM para memória persistente é 1:4.
export MEMKIND_DAX_KMEM_NODES=1 && \ sudo 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 -
Também é possível personalizar a proporção de DRAM para memória persistente e reservar parte da DRAM para outros aplicativos. Por exemplo, defina a proporção como 1:16 e aloque 34 GiB de memória, sendo 2 GiB de DRAM e 32 GiB de memória persistente.
export MEMKIND_DAX_KMEM_NODES=1 && \ sudo redis-server /etc/redis.conf --port 8369 --memory-alloc-policy ratio --dram-pmem-ratio 1 16 --maxmemory 34G
-
Implantar aplicativos Redis no CentOS
Os recursos e softwares nesta seção têm a seguinte configuração:
Tipo de instância: ecs.re6p-redis.2xlarge
Imagem: CentOS 7.6
Redis: Redis 4.0.14
memkind: memkind 1.10.1-rc2
Certifique-se de baixar os recursos de https://github.com/ antes de prosseguir. Se um download falhar, execute o comando novamente até obter sucesso.
-
Adquira uma instância de memória persistente.
Para obter mais informações, consulte Criar uma instância personalizada. Observe as seguintes configurações:
Instance: Para a arquitetura x86-Compute, clique em Memory-optimized Type e selecione o tipo de instância ecs.re6p-redis.2xlarge.
Images: Selecione CentOS 7.6 (64-bit).
-
Faça login na instância.
Para obter mais informações, consulte Métodos de conexão.
-
Prepare o ambiente de compilação.
export MEMKIND_DAX_KMEM_NODES=1 && \ sudo yum -y install numactl-devel.x86_64 && \ sudo yum -y groupinstall 'Development Tools' -
Prepare o código-fonte do Redis 4.0.14.
sudo wget https://github.com/redis-io/redis/archive/4.0.14.tar.gz && \ sudo 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.patchNotaEste patch habilita a memória persistente. Diferentes versões do Redis exigem patches diferentes. Para obter mais informações, consulte Baixar patches para habilitar memória persistente.
-
Prepare o código-fonte do memkind.
O memkind é uma ferramenta de gerenciamento de memória usada para alocar e gerenciar memória persistente.
-
Baixe o código-fonte do memkind.
sudo 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 -
Opcional: Ajuste o makefile.
NotaExecute
ldd --versionpara verificar a versão do glibc. Caso a versão do glibc seja 2.17 ou posterior, ignore as etapas a seguir e compile o Redis diretamente.cd ./deps/memkind && \ sudo 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 ../../NotaSe o download do patch falhar, não inclua
cd ./deps/memkind && \ao executar o comando novamente.
-
-
Compile e instale o Redis.
make clean && \ make distclean && \ make MALLOC=memkind -j 4 && \ sudo make install -
Inicie o aplicativo Redis e configure a capacidade de DRAM e memória persistente.
Exemplos de comandos:
NotaSubstitua /home/user pela pasta real do usuário.
-
A proporção recomendada de DRAM para memória persistente é 1:4.
redis-server /home/user/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 -
Também é possível personalizar a proporção de DRAM para memória persistente e reservar parte da DRAM para outros aplicativos. Por exemplo, defina a proporção como 1:16 e aloque 34 GiB de memória, sendo 2 GiB de DRAM e 32 GiB de memória persistente.
redis-server /home/user/redis-4.0.14/redis.conf --port 8369 --memory-alloc-policy ratio --dram-pmem-ratio 1 16 --maxmemory 34G
-
Implantar aplicativos Redis no Ubuntu
Os recursos e softwares nesta seção têm a seguinte configuração:
Tipo de instância: ecs.re6p-redis.2xlarge
Imagem: Ubuntu 20,04
Redis: Redis 6.2.5
memkind: memkind 1.10.1-rc2
Antes de prosseguir, certifique-se de baixar os recursos de https://github.com/. Se um download falhar, execute o comando novamente até obter sucesso.
-
Adquira uma instância otimizada para memória persistente.
Para obter mais informações, consulte Criar uma instância personalizada. Observe as seguintes configurações:
Instance: Na seção de arquitetura x86-Compute, clique em Memory-optimized Type e selecione o tipo de instância ecs.re6p-redis.2xlarge.
Images: Selecione Ubuntu 20,04 64-bit.
-
Faça login na instância.
Para obter mais informações, consulte Métodos de conexão.
-
Prepare o ambiente de compilação.
export MEMKIND_DAX_KMEM_NODES=1 && \ sudo apt update && \ sudo apt -y install git && \ sudo apt install -y libnuma-dev && \ sudo apt install -y numactl -
Prepare o código-fonte do Redis 6.2.5.
sudo wget https://download.redis.io/releases/redis-6.2.5.tar.gz && \ sudo 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.patchNotaO patch serve para habilitar a memória persistente. Diferentes versões do Redis exigem patches diferentes. Para obter mais informações, consulte Baixar patches para habilitar memória persistente.
-
Prepare o código-fonte do memkind.
O memkind é uma ferramenta de gerenciamento de memória usada para alocar e gerenciar memória persistente.
-
Baixe o código-fonte do memkind.
sudo 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/ -
Ajuste o makefile.
NotaExecute
ldd --versionpara verificar a versão do glibc. Caso a versão do glibc seja 2.17 ou posterior, ignore as etapas a seguir e compile o Redis diretamente.cd ./deps/memkind && \ sudo 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 ../../NotaSe o download do patch falhar, não inclua
cd ./deps/memkind && \ao executar o comando novamente.
-
-
Compile e instale o Redis.
make clean && \ make distclean && \ make MALLOC=memkind -j 4 && \ sudo make install -
Inicie o aplicativo Redis e configure a capacidade de DRAM e memória persistente.
Exemplos de comandos:
NotaSubstitua /home/user pelo caminho da pasta real do usuário.
-
A proporção recomendada de DRAM para memória persistente é 1:4.
redis-server /home/user/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 -
Também é possível personalizar a proporção de DRAM para memória persistente e reservar parte da DRAM para outros aplicativos. Por exemplo, defina a proporção como 1:16 e aloque 34 GiB de memória, compostos por 2 GiB de DRAM e 32 GiB de memória persistente.
redis-server /home/user/redis-6.2.5/redis.conf --port 8369 --memory-alloc-policy ratio --dram-pmem-ratio 1 16 --maxmemory 34G
-
Baixar patches para habilitar memória persistente
Substitua a URL de download e o número da versão no nome do arquivo no comando de exemplo. Por exemplo, o comando para baixar o patch do Redis 6.2.5 é:
sudo wget https://github.com/redis/redis/compare/6.2.5...tieredmemdb:6.2.5-devel.diff -O redis_6.2.5_diff_tieredmemdb.patch
As URLs de download dos patches compatíveis são:
-
Redis 6.2
https://github.com/redis/redis/compare/6.2.5...tieredmemdb:6.2.5-devel.diff
-
Redis 6.0
https://github.com/redis/redis/compare/6.0.9...tieredmemdb:6.0.9-devel.diff
https://github.com/redis/redis/compare/6.0.5...tieredmemdb:6.0.5-devel.diff
https://github.com/redis/redis/compare/6.0.3...tieredmemdb:6.0.3-devel.diff
https://github.com/redis/redis/compare/6.0.0...tieredmemdb:6.0.0-devel.diff
-
Redis 5.0
-
Redis 4.0
https://github.com/redis/redis/compare/4.0.14...tieredmemdb:4.0.14-devel.diff
https://github.com/redis/redis/compare/4.0.9...tieredmemdb:4.0.9-devel.diff
https://github.com/redis/redis/compare/4.0.2...tieredmemdb:4.0.2-devel.diff
https://github.com/redis/redis/compare/4.0.0...tieredmemdb:4.0.0-devel.diff
-
Redis 3.0
https://github.com/redis/redis/compare/3.2.12...tieredmemdb:3.2.diff