我知道这是一个老问题,但我有一个解决问题的方法sorted sets
。
- 您将有不同
sorted sets
的组合appName
和,wrong keyword
例如myapp1:wrongword
, myapp2:anotherwrongword
, myanotherapp:yetanotherwrongword
... 将是键。
- 每当用户在应用程序中输入错误的关键字时,您将使用
ZADD
with unique identifier
(在应用程序层中创建,例如 UUID)作为值,使用 a timestamp
(输入时间)作为score
排序集。标识符必须是唯一的,因为如果您输入用户 ID,那么每当同一用户在不同时间在同一应用程序中输入错误的关键字时,它将覆盖score
已排序集的。
- 然后你可以
ZCOUNT
用来计算
有多少人在尝试使用应用程序 #1之间TIMESTAMP1
的关键字错误”TIMESTAMP2
为简单起见;我使用小数字作为时间戳(score
),您的应用名称是myapp
,错误的关键字是wrong1
。任意字母是在您的应用程序层生成的唯一 ID。
127.0.0.1:6379> ZADD myapp:wrong1 123 abcdef 123 defg 126 xyz 132 qpr 145 ypz
(integer) 5
127.0.0.1:6379> ZRANGE myapp:wrong1 0 -1 WITHSCORES
1) "abcdef"
2) "123"
3) "defg"
4) "123"
5) "xyz"
6) "126"
7) "qpr"
8) "132"
9) "ypz"
10) "145"
127.0.0.1:6379> ZRANGEBYSCORE myapp:wrong1 123 127
1) "abcdef"
2) "defg"
3) "xyz"
127.0.0.1:6379> ZCOUNT myapp:wrong1 123 127
(integer) 3
127.0.0.1:6379> ZCOUNT myapp:wrong1 123 126
(integer) 3
127.0.0.1:6379> ZCOUNT myapp:wrong1 123 125
(integer) 2
在使用ZCOUNT
时,您可以使用时间戳间隔来获取用户总数,如此处所述。