猿问

使用 Redis 位图随机数字 ID 作为偏移量

我想在 Redis 中使用位图来存储位以进行分析。但是对于位图,有必要指定一个位置,使用cli它看起来像这样:offset

> SETBIT mykey <offset> 1

通常,偏移量是数据库中的 ID 值,因此它是唯一且按顺序排列的。但在我的情况下,我不能这样做,因为我想保存的位不是登录用户,而是网页上的查看者,所以他们没有ID。

这意味着我需要生成一个随机数值并将其用作偏移量。我将使用PHP。到目前为止,我已经尝试过这个:

$id = hexdec( substr( md5($uniqid()), 0, 10 ) );

这将产生整数,例如:。如果我不需要,我不想使用这么大的整数作为偏移量。生成唯一数值的最有效方法是什么,该值将从较小的数字开始,但随后将根据已经存在的查看者数量增加?584657569161


慕运维8079593
浏览 108回答 1
1回答

动漫人物

以下是可能适合您的方法:在 Redis 中保留一个计数器,并为每个新的唯一查看者 ID 保留一个计数器INCR使用 Redis 哈希将计数器获得的结果映射到查看器 ID - 每个字段都是一个整数,值是查看器 ID。使用此选项可将整数 ID 解析为查看器 ID。使用不同的 Hash 重复步骤 2,其中字段是查看器 ID,值是整数,并使用它来将查看器转换为整数 ID。
随时随地看视频慕课网APP
我要回答