如何在redis中获取用户的所有密钥



我目前正在研究使用redis来管理星号的黑白名单,以管理垃圾邮件呼叫。由于redis是一个键值存储,因此最好检查数据库中是否有电话号码。我可以在商店的价值部分存储一些额外的信息,并使用电话号码作为密钥。我有两个问题A( 一个电话号码可能会在密钥中多次出现,因为它对不同的用户来说是如此。所以,由于数据库中的密钥必须是唯一的,我认为最好的方法是使用像user这样的密钥:电话号码。有没有一种方法可以获得给定用户的所有记录:在密钥中,或者只有当我有完整的密钥时,我才能获得数据

B( 当我将电话号码存储为密钥时,我可以使用类似user:+21355551212的东西吗?还是密钥中的+会引起问题?

要回答您的第一个问题:不,您不需要完整的密钥来获取给定用户的所有记录。Redis提供通配符匹配,您可以在您的情况下使用。例如:

127.0.0.1:6379> set john:1234567890 johnOne
OK
127.0.0.1:6379> set john:0987654321 johnTwo
OK
127.0.0.1:6379> keys john*
1) "john:1234567890"
2) "john:0987654321"
127.0.0.1:6379> 

我设置了两个密钥,都是用户"john",后面跟着不同的电话号码,所以当我需要所有以john开头的密钥时,我们可以使用"keys john*"来获得所有以"john"开头的密钥。

要回答你的第二部分,是的,你可以在键中使用"+",没有任何问题。再次举一个例子:

127.0.0.1:6379> set user:+1234567890 helloagain
OK

相关内容

最新更新