Redis 是个内存数据库,快得离谱。接单阶段,我常用的就五个场景。
场景一:缓存
import redis
r = redis.Redis()
if not r.exists(f"comment:{id}"):
r.setex(f"comment:{id}", 3600, get_comment(id)) # 缓存 1 小时
|
场景二:计数器
r.incr("article:123:views") # 文章阅读数 +1
|
场景三:排行榜
r.zadd("ranking", {"user_a": 100, "user_b": 90}) # sorted set,自动排序
|
场景四:限流
# 1 分钟内最多 10 次
key = f"rate_limit:{user_id}"
if r.incr(key) > 10:
raise Exception("太快了")
r.expire(key, 60)
|
场景五:消息队列(简易版)
r.lpush("tasks", json.dumps(task))
worker = r.brpop("tasks", timeout=0)
|
几个坑:
- 必须设过期时间,不然内存炸
- 不要存太大对象(> 1MB),会阻塞
- 重要数据别只放 Redis,它是内存数据库,重启就没了
会这五个场景,够接 90% 的单了。
本文由 BBZ · 小朵科技工作室 出品。