خیلی‌ها Redis رو فقط برای Cache میشناسن ولی این دیتابیس قدرت خیلی بیشتری داره. با یاد گرفتن Data Typeهاش، میتونید کارهای فوق‌العاده انجام بدید.

Redis چیه؟

Redis (REmote DIctionary Server) یه In-memory Key-Value Database هست. سرعت خارق‌العاده و انواع داده متنوع.

Data Types

Redis از این نوع‌ها پشتیبانی میکنه:
- Strings
- Lists
- Sets
- Sorted Sets (ZSets)
- Hashes
- Bitmaps
- HyperLogLogs
- Streams
- Geospatial

Strings

ساده‌ترین. برای Cache، Counter، Session.
Commands:
SET key value
GET key
INCR key (افزایش)
EXPIRE key 3600 (TTL)

کاربرد: Page Cache، Counter، Session ID

Lists

لیست ساده‌ای از آیتم‌ها. مثل Queue یا Stack.
Commands:
LPUSH list value (چپ)
RPUSH list value (راست)
LRANGE list 0 -1 (خواندن)
LPOP list (حذف چپ)

کاربرد: Job Queue، Latest N، Chat History.

Sets

مجموعه بدون تکرار.
Commands:
SADD set value
SMEMBERS set
SISMEMBER set value
SINTER set1 set2 (اشتراک)

کاربرد: Unique Visitors، Tags، Friends، Random.

Sorted Sets (ZSet)

Set + Score. برای Leaderboard.
Commands:
ZADD leaderboard 100 user1
ZADD leaderboard 200 user2
ZRANGE leaderboard 0 -1 WITHSCORES
ZINCRBY leaderboard 10 user1

کاربرد: Leaderboard بازی‌ها، Trending، Time-series، Rate limiting.

Hashes

Key-Value داخل یه Key. مثل Object.
Commands:
HSET user:1 name mohammad age 30
HGET user:1 name
HGETALL user:1
HINCRBY user:1 age 1

کاربرد: User Object، Shopping Cart، Config.

Bitmaps

Bit-level operation. برای فضای کم.
Commands:
SETBIT active:today 1234 1
GETBIT active:today 1234
BITCOUNT active:today

کاربرد: Daily Active Users، Feature Flags، Analytics.

HyperLogLogs

تخمین unique count با فضای کم.
Commands:
PFADD hll visitor1
PFCOUNT hll

کاربرد: Unique Visitors تقریبی سریع، Unique Search Terms. ۱۲ کیلوبایت میلیون‌ها آیتم.

Streams

Log با ID خودکار. Message Queue.
Commands:
XADD mystream * field1 value1
XREAD COUNT 10 STREAMS mystream 0

کاربرد: Event Streaming، Real-time Analytics، Message Queue.

Geospatial

Location-based.
Commands:
GEOADD locations 51.4 35.7 Tehran
GEODIST locations Tehran Isfahan
GEORADIUS locations 51 35 100 km

کاربرد: Ride Sharing، Nearby Places، Delivery.

Pub/Sub

ارتباط بین سرویس‌ها.
Commands:
PUBLISH channel message
SUBSCRIBE channel

کاربرد: Real-time notification، Chat، Event broadcasting.

Transaction

MULTI/EXEC:
MULTI
INCR counter
SET last value
EXEC

Scripting

Lua scripting داخل Redis: EVAL return 1 0

Persistence

RDB: Snapshot. سریع، ولی داده اخیر رو ممکنه از دست بدید.
AOF: Append-only File. Log هر command. مطمئن.

Configuration

redis.conf:
maxmemory 2gb
maxmemory-policy allkeys-lru

Cluster و Sentinel

Redis Cluster برای مقیاس افقی. Sentinel برای High Availability با Automatic failover.

Client Libraries

PHP: predis، phpredis. Node.js: ioredis. Python: redis-py. Java: Jedis، Lettuce.

WordPress

Redis Object Cache پلاگین. سرعت سایت رو ۱۰ برابر میکنه.

Laravel

پشتیبانی پیش‌فرض. Session، Cache، Queue.

سباهاست پیشنهاد

سباهاست هاست‌های خودش رو با Redis ارائه میده.

جمع‌بندی

Redis فقط Cache نیست، یه Swiss Army Knife دیتابیس‌هاست. با یاد گرفتن Data Typeهاش، کارهای فوق‌العاده انجام میدید.