redis
Redis in-memory data store for caching, pub/sub, and real-time features
معلومات المصدر
- المستودع
- ffsshhttiikk/opencode-agents-skills
- آخر نشاط في المصدر
- ٢٨ فبراير ٢٠٢٦ في ٢٢:٥٤
- لغة SKILL.md المكتشفة
- الإنجليزية
- النجوم
- ٣
- التفرعات
- ٢
خيارات التثبيت
يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.
مراجعة ملفات المصدر
اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.
عرض SKILL.md
SKILL.md
تعليمات المصدر · معاينة للقراءة فقط- name
- redis
- description
- Redis in-memory data store for caching, pub/sub, and real-time features
- license
- MIT
- compatibility
- opencode
- metadata
- {"audience":"developers","category":"databases"}
## What I do
- Implement caching strategies
- Use Redis for session storage
- Build pub/sub systems
- Create rate limiters
- Use sorted sets for rankings
- Implement distributed locks
- Work with Redis Streams
## When to use me
When building high-performance caching, real-time features, or pub/sub systems.
## Strings
```bash
# Set/Get
SET user:1 "John"
GET user:1
# With expiry
SET session:abc "data" EX 3600
SETEX cache:key 300 "value"
# Increment
INCR views:page:1
INCRBY counter 10
# Multiple
MSET key1 "val1" key2 "val2"
MGET key1 key2
```
## Hashes
```bash
# Hash operations
HSET user:1 name "John" email "john@example.com" age "30"
HGET user:1 name
HMGET user:1 name email
HGETALL user:1
# Increment
HINCRBY user:1 age 1
# Delete field
HDEL user:1 age
```
## Lists
```bash
# Push/Pop
LPUSH queue:tasks "task1"
LPUSH queue:tasks "task2"
RPOP queue:tasks
# Range
LRANGE mylist 0 -1
# Blocking (queue)
BLPOP queue:tasks 0 # Wait for item
```
## Sets
```bash
# Add/Members
SADD tags:post:1 "react" "javascript" "frontend"
SMEMBERS tags:post:1
# Set operations
SADD users:online "alice" "bob" "charlie"
SISMEMBER users:online "alice"
# Intersection
SINTER set1 set2
# Random
SRANDMEMBER myset 3
```
## Sorted Sets
```bash
# Leaderboard
ZADD leaderboard 100 "player1"
ZADD leaderboard 200 "player2"
ZADD leaderboard 150 "player3"
# Get rank (0 = highest)
ZRANK leaderboard player2
ZREVRANK leaderboard player1
# Range
ZRANGE leaderboard 0 10 WITHSCORES
ZREVRANGE leaderboard 0 9 WITHSCORES
```
## Pub/Sub
```bash
# Subscribe
SUBSCRIBE chat:room:1
# Publish
PUBLISH chat:room:1 "Hello everyone"
```
## Streams
```bash
# Add to stream
XADD mystream * field1 value1 field2 value2
# Read
XRANGE mystream - + COUNT 10
XREAD COUNT 10 STREAMS mystream 0
# Consumer groups
XGROUP CREATE mystream group1 0
XREADGROUP GROUP group1 consumer1 STREAMS mystream >
```
## Python
```python
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
# String
r.set('key', 'value', ex=3600)
r.get('key')
# Hash
r.hset('user:1', mapping={'name': 'John', 'email': 'john@example.com'})
r.hgetall('user:1')
# List
r.lpush('queue', 'task')
r.rpop('queue')
# Sorted set
r.zadd('leaderboard', {'player1': 100, 'player2': 200})
r.zrevrange('leaderboard', 0, 9, withscores=True)
# Pub/Sub
p = r.pubsub()
p.subscribe('chat')
for message in p.listen():
print(message)
```
## Rate Limiter
```python
def is_rate_limited(key, limit, window):
now = time.time()
window_start = now - window
pipe = r.pipeline()
pipe.zremrangebyscore(key, 0, window_start)
pipe.zadd(key, {str(now): now})
pipe.zcard(key)
pipe.expire(key, window)
results = pipe.execute()
count = results[2]
return count > limit
```
عرض على GitHub