基于Redis自增实现全局ID生成器(详解)
import redis
class RedisIdGenerator:
"""
使用Redis的INCR命令实现的全局唯一ID生成器。
"""
def __init__(self, redis_host='localhost', redis_port=6379, redis_db=0):
self.redis_conn = redis.StrictRedis(host=redis_host, port=redis_port, db=redis_db)
self.key = 'global_id' # 用于存储全局唯一ID的Redis键
def get_id(self):
"""
获取一个全局唯一的ID。
"""
return self.redis_conn.incr(self.key)
# 使用示例
redis_id_gen = RedisIdGenerator()
user_id = redis_id_gen.get_id()
print(f"Generated unique ID: {user_id}")
这段代码首先导入了redis
模块,然后定义了一个名为RedisIdGenerator
的类,它接受Redis服务器的地址、端口和数据库编号作为参数。__init__
方法创建了一个到Redis的连接。get_id
方法通过调用incr
命令在每次调用时返回一个自增的唯一ID。这个实现利用了Redis的原子自增操作来保证ID的全局唯一性。
评论已关闭