خیلیها 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هاش، کارهای فوقالعاده انجام میدید.