在Redis中保存用户ID的最佳实践
我正在学习Redis,我想知道使用INCR生成唯一的用户ID是否是一个好的实践,或者,如果不是,可能会导致问题的一些场景是什么。注意:此问题假设不涉及其他数据库 我能想到的另一种方法是生成一个随机uuid()并使用它,但如果这两种方法都是可接受的,那么取舍是什么呢 下面是我在网上找到的一些示例代码:在Redis中保存用户ID的最佳实践,redis,nosql,Redis,Nosql,我正在学习Redis,我想知道使用INCR生成唯一的用户ID是否是一个好的实践,或者,如果不是,可能会导致问题的一些场景是什么。注意:此问题假设不涉及其他数据库 我能想到的另一种方法是生成一个随机uuid()并使用它,但如果这两种方法都是可接受的,那么取舍是什么呢 下面是我在网上找到的一些示例代码: uid = db.incr("users:enum") pipe = db.pipeline() pipe.set("users:%s:uid" % username, uid) pipe.
uid = db.incr("users:enum")
pipe = db.pipeline()
pipe.set("users:%s:uid" % username, uid)
pipe.set("users:%s" % username, password_hash)
pipe.sadd("users", username)
这是一种有效的方法,因为INCR是原子的。事实上,redis.io上有一个遵循此方法的操作。折衷是最小的,但是使用
uuid()
之类的东西可能会更快,因为它取决于进程已经“知道”的进程ID、时间戳等,而无需对redis执行可能导致较小延迟的操作。