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)

几个坑:

会这五个场景,够接 90% 的单了。


本文由 BBZ · 小朵科技工作室 出品。