“分桶”到底是什么
一句话解释:
👉 按规则把数据分散到不同“桶”(Bucket)里
例如多域名邮箱系统存储邮件时使用Redis前先分桶
这个“桶”可以是:
不同 Redis DB
不同 Redis 实例
不同 Key 前缀
甚至不同服务器
示范代码
import hashlib
def get_bucket(email):
return int(hashlib.md5(email.encode()).hexdigest(), 16) % 10
def make_key(email):
local, domain = email.split("@")
bucket = get_bucket(email)
return f"mail:{bucket}:{domain}:{local}"
email_list = ['abc@gmail.com','a2b2a2234@qq.com','a223baadf23aadafd@gmail.com']
for name in email_list:
print(make_key(name))
print 输出结果:
mail:9:gmail.com:abc
mail:8:qq.com:a2b2a2234
mail:9:gmail.com:a223baadf23aadafd