全部产品
Search
文档中心

Container Service for Kubernetes:Menyebarkan instance Redis dengan volume NVM yang dipasang sebagai memori langsung

更新时间:Jun 27, 2025

Di Container Service for Kubernetes (ACK), akses langsung ke perangkat memori persisten (PMEM) memungkinkan throughput tinggi dan latensi rendah. Topik ini menjelaskan cara menggunakan dynamic random-access memory (DRAM) dan PMEM untuk menyebarkan instance Redis berbasis memori dengan kapasitas besar.

Informasi latar belakang

Untuk menyebarkan instance Redis berbasis memori dengan kapasitas besar, Anda dapat memasang volume NVM (non-volatile memory) sebagai memori langsung. Solusi ini menawarkan manfaat berikut:

  • Volume NVM diakses secara deklaratif, sehingga mempermudah penggunaan sumber daya NVM.

  • Dengan kapasitas memori yang sama, biaya dapat dikurangi hingga 30%–50%.

  • Modifikasi aplikasi diminimalkan.

Redis menggunakan perangkat NVM sebagai memori langsung dan memanggil fungsi MMAP untuk memetakan ruang alamat berturut-turut dari PMEM. Dalam hal ini, versi Redis tertentu diperlukan. Contoh berikut menunjukkan cara menanyakan gambar instance Redis.

Gunakan DRAM untuk menyebarkan instance Redis berbasis memori

DRAM memberikan kinerja akses berkecepatan tinggi tetapi kehilangan data saat daya dimatikan. Oleh karena itu, DRAM tidak cocok untuk skenario berskala besar karena biayanya yang tinggi.

  1. Ikuti langkah-langkah berikut untuk menyebarkan instance Redis:

    1. Gunakan template contoh berikut untuk membuat file redis-normal.yaml:

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: redis-normal
        labels:
          app: redis-normal
      spec:
        selector:
          matchLabels:
            app: redis-normal
        template:
          metadata:
            labels:
              app: redis-normal
          spec:
            containers:
            - name: redis
              image: registry.cn-hangzhou.aliyuncs.com/plugins/redis:v1-normal
              imagePullPolicy: Always
              resources:
                requests:
                  memory: 30Gi
                limits:
                  memory: 30Gi
    2. Jalankan perintah berikut untuk menyebarkan instance Redis:

      kubectl apply -f redis-normal.yaml
  2. Jalankan perintah berikut untuk menanyakan pod yang menjalankan instance Redis:

    kubectl get pod | grep redis-normal

    Keluaran yang Diharapkan:

    redis-normal-***         1/1     Running   0          4d8h
  3. Jalankan perintah berikut untuk menguji kinerja penulisan instance Redis:

    LD_PRELOAD=/usr/local/lib/libmemkind.so redis-benchmark -d 102400 -t set -n 1000000 -r 1000000

    Keluaran yang Diharapkan:

    1000000 permintaan selesai dalam 13.03 detik
    76751.86 permintaan per detik

    Keluaran di atas menunjukkan bahwa instance Redis berbasis memori yang disebarkan dengan DRAM dapat memproses sekitar 76.751 permintaan per detik.

Gunakan PMEM untuk menyebarkan instance Redis berbasis memori

PMEM menyediakan penyimpanan non-volatile dan memiliki metode akses serta kecepatan yang mirip dengan DRAM.

  1. Jalankan perintah berikut untuk menyebarkan instance Redis berbasis memori:

    kubectl apply -f redis-normal.yaml

    Template berikut memberikan contoh file redis-normal.yaml:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pmem-pvc-direct
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 60Gi
      storageClassName: csi-pmem-direct
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: redis-pmem-direct
      labels:
        app: redis-pmem-direct
    spec:
      selector:
        matchLabels:
          app: redis-pmem-direct
      template:
        metadata:
          labels:
            app: redis-pmem-direct
        spec:
          containers:
          - name: nginx
            image: registry.cn-hangzhou.aliyuncs.com/plugins/redis:v1-pmem
            imagePullPolicy: Always
            volumeMounts:
              - name: pmem-pvc
                mountPath: "/mnt/pmem"
          volumes:
            - name: pmem-pvc
              persistentVolumeClaim:
                claimName: pmem-pvc-direct
  2. Jalankan perintah berikut untuk menanyakan pod yang menjalankan instance Redis:

    kubectl get pod | grep redis-pmem-direct

    Keluaran yang Diharapkan:

    redis-pmem-direct-5b469546db-5tk2j   1/1     Running   0          4d9h
  3. Jalankan perintah berikut untuk menguji kinerja penulisan instance Redis:

    LD_PRELOAD=/usr/local/lib/libmemkind.so redis-benchmark -d 10240 -t set -n 1000000 -r 1000000

    Keluaran yang Diharapkan:

    1000000 permintaan selesai dalam 19.89 detik
    50266.41 permintaan per detik

    Keluaran di atas menunjukkan bahwa instance Redis berbasis memori yang disebarkan dengan PMEM dapat memproses sekitar 50.266 permintaan per detik.

    Dibandingkan dengan instance Redis berbasis memori yang disebarkan dengan DRAM, instance Redis berbasis memori yang disebarkan dengan PMEM mengurangi kinerja penulisan sebesar 34%, tetapi menawarkan kinerja baca yang sama serta penghematan biaya hingga 50%. Tipe instance Elastic Compute Service (ECS) dengan perangkat NVM, seperti ecs.ebmre6p.26xlarge, menawarkan 1,5 TB memori MEM, yang lima kali lipat kapasitas database berbasis memori umum.