小编Gec*_*cko的帖子

redis 性能——最多删除 100 条记录?

我是 Redis 的新手,正在阅读 <Redis in Action > 一书,在第 2.1 节(“登录和 cookie 缓存”)中有一个clean_sessions函数:

QUIT = False
LIMIT = 10000000

def clean_session:
  while not QUIT:
    size = conn.zcard('recent:')
    if size <= LIMIT:
      time.sleep(1)
      continue

    # find out the range in `recent:` ZSET
    end_index = min(size-LIMIT, 100)
    tokens = conn.zrange('recent:', 0, end_index-1)

    # delete corresponding data
    session_keys = []
    for token in tokens:
      session_keys.append('viewed:' + token)

    conn.delete(*session_keys)
    conn.hdel('login:', *tokens)
    conn.zrem('recent:', *tokens)
Run Code Online (Sandbox Code Playgroud)

如果超过1000万条记录,它会删除登录令牌和相应的数据,问题是:

  • 为什么每次最多删除 100 条记录?

  • 为什么不立即删除size - LIMIT记录?

  • 是否有一些性能考虑? …

redis

3
推荐指数
1
解决办法
2027
查看次数

标签 统计

redis ×1