All Products
Search
Document Center

Elastic Compute Service:Instal aplikasi Redis pada instans dengan memori persisten

Last Updated:Apr 02, 2026

Instans ECS yang dioptimalkan untuk memori persisten (tipe instans re6p-redis) memiliki rasio CPU-memori yang tinggi dan dapat menjalankan aplikasi Redis dengan biaya per GiB memori yang lebih rendah. Topik ini menjelaskan cara melakukan deploy Redis pada instans re6p-redis yang menjalankan Alibaba Cloud Linux 2, CentOS, atau Ubuntu.

Cara kerja

Instans re6p-redis mengekspos dua tier memori ke sistem operasi:

TierKarakteristikPenggunaan Redis
DRAMCepat, kapasitas lebih rendahData hot dan tabel hash
PMEMKapasitas lebih tinggi, biaya per GiB lebih rendahCold Data

Redis mengakses PMEM melalui memkind, sebuah library manajemen memori. Dua flag startup mengontrol perilaku alokasi:

FlagTujuanNilai yang direkomendasikan
MEMKIND_DAX_KMEM_NODES=1Menetapkan node PMEMSelalu diatur ke 1
--dram-pmem-ratio 1 4Mengatur rasio alokasi DRAM terhadap PMEM1 4 (1 bagian DRAM : 4 bagian PMEM)

Flag --hashtable-on-dram yes menyimpan tabel hash Redis di DRAM untuk pencarian yang lebih cepat, terlepas dari pengaturan rasio.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Tipe instans re6p-redis: ecs.re6p-redis.large, ecs.re6p-redis.xlarge, ecs.re6p-redis.2xlarge, ecs.re6p-redis.4xlarge, atau ecs.re6p-redis.13xlarge

  • Salah satu image berikut: Alibaba Cloud Linux 2, CentOS 7.6 atau versi lebih baru, atau Ubuntu 18.04 atau 20.04

Deploy Redis pada Alibaba Cloud Linux 2 (direkomendasikan)

Alibaba Cloud Linux 2 telah dioptimalkan khusus untuk Redis pada PMEM dan memberikan performa lebih dari 20% lebih baik dibandingkan distribusi Linux komunitas. Image ini menyertakan repositori YUM untuk Redis 6.0.5 dan Redis 3.2.12, sehingga Anda dapat menginstal salah satu versi tersebut hanya dengan satu perintah—tanpa perlu kompilasi.

Konfigurasi contoh:

PengaturanNilai
Tipe instansecs.re6p-redis.2xlarge
ImageAlibaba Cloud Linux 2.1903 LTS 64-bit

Buat dan hubungkan ke instans

  1. Buat instance ECS pada tab Custom Launch dengan pengaturan berikut:

    • Instans: Di bawah menu drop-down arsitektur x86, pilih Memory-optimized, lalu pilih ecs.re6p-redis.2xlarge.

    • Image: Pilih Alibaba Cloud Linux 2.1903 LTS 64-bit.

  2. Hubungkan ke instans.

Instal Redis

Instal Redis 6.0.5 atau Redis 3.2.12 sesuai kebutuhan Anda.

  • Redis 6.0.5:

    sudo yum install -y alinux-release-experimentals && \
    sudo yum install -y redis-6.0.5
  • Redis 3.2.12:

    sudo yum install -y alinux-release-experimentals && \
    sudo yum install -y redis-3.2.12

Jalankan Redis

Atur MEMKIND_DAX_KMEM_NODES=1 untuk menetapkan node PMEM, lalu jalankan server Redis.

  • Rasio yang direkomendasikan (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
  • Rasio kustom (1:16, total 34 GiB = 2 GiB DRAM + 32 GiB PMEM):

    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

Verifikasi Redis sedang berjalan

redis-cli -p 8369 ping

Output yang diharapkan: PONG

Untuk memeriksa versi Redis dan alokasi memori:

redis-cli -p 8369 info server | grep redis_version
redis-cli -p 8369 info memory

Deploy Redis pada CentOS

Untuk CentOS, bangun Redis dari source dan hubungkan dengan memkind untuk mengaktifkan dukungan PMEM.

Konfigurasi contoh:

PengaturanNilai
Tipe instansecs.re6p-redis.2xlarge
ImageCentOS 7.6 64-bit
Versi RedisRedis 4.0.14
Versi memkindmemkind 1.10.1-rc2
Penting

Semua paket source dan patch diunduh dari GitHub. Jika pengunduhan gagal, ulangi perintah hingga berhasil.

Buat dan hubungkan ke instans

  1. Buat instance ECS pada tab Custom Launch dengan pengaturan berikut:

    • Instans: Di bawah menu drop-down arsitektur x86, pilih Memory-optimized, lalu pilih ecs.re6p-redis.2xlarge.

    • Image: Pilih CentOS 7.6 64-bit.

  2. Hubungkan ke instans.

Siapkan lingkungan build

export MEMKIND_DAX_KMEM_NODES=1 && \
sudo yum -y install numactl-devel.x86_64 && \
sudo yum -y groupinstall 'Development Tools'

Unduh dan patch source Redis

Patch tieredmemdb menambahkan dukungan PMEM ke Redis dan spesifik untuk versi tertentu.

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.patch

Untuk patch versi Redis lainnya, lihat Patch yang tersedia untuk dukungan PMEM.

Unduh dan konfigurasi memkind

memkind adalah library manajemen memori yang digunakan Redis untuk mengalokasikan PMEM.

  1. Unduh source 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
  2. (Opsional) Sesuaikan Makefile untuk versi glibc lama. Jalankan ldd --version untuk memeriksa versi glibc Anda. Jika versinya 2.17 atau lebih baru, lewati langkah ini. Jika glibc lebih lama dari 2.17, terapkan patch berikut:

    Jika pengunduhan patch gagal, jalankan perintah berikutnya tanpa baris cd ./deps/memkind && \.
    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 ../../

Kompilasi dan instal Redis

make clean && \
make distclean && \
make MALLOC=memkind -j 4 && \
sudo make install

Jalankan Redis

Ganti /home/user dengan path direktori home Anda yang sebenarnya.

  • Rasio yang direkomendasikan (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
  • Rasio kustom (1:16, total 34 GiB = 2 GiB DRAM + 32 GiB PMEM):

    redis-server /home/user/redis-4.0.14/redis.conf \
      --port 8369 \
      --memory-alloc-policy ratio \
      --dram-pmem-ratio 1 16 \
      --maxmemory 34G

Verifikasi Redis sedang berjalan

redis-cli -p 8369 ping

Output yang diharapkan: PONG

Deploy Redis pada Ubuntu

Untuk Ubuntu, bangun Redis dari source menggunakan proses yang sama seperti pada CentOS, tetapi gunakan apt untuk dependensi.

Konfigurasi contoh:

PengaturanNilai
Tipe instansecs.re6p-redis.2xlarge
ImageUbuntu 20.04 64-bit
Versi RedisRedis 6.2.5
Versi memkindmemkind 1.10.1-rc2
Penting

Semua paket source dan patch diunduh dari GitHub. Jika pengunduhan gagal, ulangi perintah hingga berhasil.

Buat dan hubungkan ke instans

  1. Buat instance ECS pada tab Custom Launch dengan pengaturan berikut:

    • Instans: Di bawah menu drop-down arsitektur x86, pilih Memory-optimized, lalu pilih ecs.re6p-redis.2xlarge.

    • Image: Pilih Ubuntu 20.04 64-bit.

  2. Hubungkan ke instans.

Siapkan lingkungan build

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

Unduh dan patch source Redis

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.patch

Untuk patch versi Redis lainnya, lihat Patch yang tersedia untuk dukungan PMEM.

Unduh dan konfigurasi memkind

  1. Unduh source 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/
  2. (Opsional) Sesuaikan Makefile untuk versi glibc lama. Jalankan ldd --version untuk memeriksa versi glibc Anda. Jika versinya 2.17 atau lebih baru, lewati langkah ini. Jika glibc lebih lama dari 2.17, terapkan patch berikut:

    Jika pengunduhan patch gagal, jalankan perintah berikutnya tanpa baris cd ./deps/memkind && \.
    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 ../../

Kompilasi dan instal Redis

make clean && \
make distclean && \
make MALLOC=memkind -j 4 && \
sudo make install

Jalankan Redis

Ganti /home/user dengan path direktori home Anda yang sebenarnya.

  • Rasio yang direkomendasikan (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
  • Rasio kustom (1:16, total 34 GiB = 2 GiB DRAM + 32 GiB PMEM):

    redis-server /home/user/redis-6.2.5/redis.conf \
      --port 8369 \
      --memory-alloc-policy ratio \
      --dram-pmem-ratio 1 16 \
      --maxmemory 34G

Verifikasi Redis sedang berjalan

redis-cli -p 8369 ping

Output yang diharapkan: PONG

Patch yang tersedia untuk dukungan PMEM

Semua patch mengikuti pola unduhan yang sama. Ganti nomor versi pada URL dan nama file output:

sudo wget https://github.com/redis/redis/compare/<version>...tieredmemdb:<version>-devel.diff \
  -O redis_<version>_diff_tieredmemdb.patch

Patch yang tersedia berdasarkan versi Redis:

Versi RedisPatch URL
6.2.5<https://github.com/redis/redis/compare/6.2.5...tieredmemdb:6.2.5-devel.diff>
6.0.9<https://github.com/redis/redis/compare/6.0.9...tieredmemdb:6.0.9-devel.diff>
6.0.5<https://github.com/redis/redis/compare/6.0.5...tieredmemdb:6.0.5-devel.diff>
6.0.3<https://github.com/redis/redis/compare/6.0.3...tieredmemdb:6.0.3-devel.diff>
6.0.0<https://github.com/redis/redis/compare/6.0.0...tieredmemdb:6.0.0-devel.diff>
5.0.9<https://github.com/redis/redis/compare/5.0.9...tieredmemdb:5.0.9-devel.diff>
5.0.2<https://github.com/redis/redis/compare/5.0.2...tieredmemdb:5.0.2-devel.diff>
5.0.0<https://github.com/redis/redis/compare/5.0.0...tieredmemdb:5.0.0-devel.diff>
4.0.14<https://github.com/redis/redis/compare/4.0.14...tieredmemdb:4.0.14-devel.diff>
4.0.9<https://github.com/redis/redis/compare/4.0.9...tieredmemdb:4.0.9-devel.diff>
4.0.2<https://github.com/redis/redis/compare/4.0.2...tieredmemdb:4.0.2-devel.diff>
4.0.0<https://github.com/redis/redis/compare/4.0.0...tieredmemdb:4.0.0-devel.diff>
3.2.12<https://github.com/redis/redis/compare/3.2.12...tieredmemdb:3.2.diff>