Redis Cluster چیست ؟

Redis Cluster چیست؟ آموزش اتصال با پایتون و Django + تفاوت با Redis Sentinel

Redis Cluster یک راهکار مقیاس‌پذیر و توزیع‌شده برای پایگاه داده Redis است که امکان **Sharding** و **High Availability** را به صورت همزمان فراهم می‌کند. در این مقاله به معرفی Redis Cluster، آموزش اتصال با پایتون و Django و تفاوت آن با Redis Sentinel می‌پردازیم.

Redis Cluster چیست؟

Redis Cluster به شما امکان می‌دهد داده‌ها را بین چندین نود Redis توزیع کنید و بدین ترتیب **ظرفیت و عملکرد سیستم را افزایش دهید**. در مقابل Redis Sentinel که فقط High Availability ارائه می‌دهد، Redis Cluster علاوه بر Failover خودکار، قابلیت **Sharding** برای مدیریت حجم بالای داده را فراهم می‌کند.

مزایای Redis Cluster

  • مقیاس‌پذیری افقی با اضافه کردن نودهای جدید
  • High Availability با Failover خودکار
  • Sharding داده‌ها بین نودهای مختلف
  • پشتیبانی از حجم بالای داده و تراکنش‌ها

تفاوت Redis Cluster و Redis Sentinel

ویژگی Redis Sentinel Redis Cluster
High Availability دارد دارد
Sharding ندارد دارد
پیچیدگی کمتر بیشتر
کاربرد اصلی افزایش دسترس‌پذیری سرور تکی مقیاس‌پذیری و مدیریت حجم داده‌های بزرگ

اتصال به Redis Cluster با پایتون

برای اتصال به Redis Cluster در پایتون از کتابخانه redis-py-cluster استفاده می‌کنیم.

نصب کتابخانه

pip install redis-py-cluster

مثال اتصال به Redis Cluster


from rediscluster import RedisCluster

# لیست نودهای Cluster
startup_nodes = [
    {"host": "127.0.0.1", "port": "7000"},
    {"host": "127.0.0.1", "port": "7001"},
    {"host": "127.0.0.1", "port": "7002"}
]

# اتصال به Cluster
rc = RedisCluster(startup_nodes=startup_nodes, decode_responses=True)

# تست اتصال
rc.set("name", "Redis Cluster")
print(rc.get("name"))

توضیح کد

  • startup_nodes → لیست نودهای اولیه برای اتصال به Cluster
  • RedisCluster(...) → ایجاد اتصال به Cluster
  • با Failover خودکار و Sharding، داده‌ها به صورت توزیع‌شده بین نودها مدیریت می‌شوند

اتصال به Redis Cluster در Django

برای استفاده از Redis Cluster در Django می‌توانید از پکیج django-redis با تنظیمات Cluster استفاده کنید.

نصب پکیج

pip install django-redis

تنظیمات Django (settings.py)


CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": [
            "redis://127.0.0.1:7000/0",
            "redis://127.0.0.1:7001/0",
            "redis://127.0.0.1:7002/0",
        ],
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.ClusterClient",
        }
    }
}

با این تنظیمات، Django می‌تواند از Redis Cluster برای کش یا ذخیره سشن‌ها به صورت توزیع‌شده استفاده کند.

جمع‌بندی

Redis Cluster یک راهکار پیشرفته برای مدیریت داده‌های توزیع‌شده و مقیاس‌پذیر در Redis است. در حالی که Redis Sentinel تنها برای High Availability مناسب است، Redis Cluster علاوه بر Failover، امکان Sharding و مدیریت حجم بالای داده را نیز فراهم می‌کند. با استفاده از کتابخانه‌های redis-py-cluster و django-redis می‌توان به راحتی از Redis Cluster در پایتون و Django استفاده کرد.