如何知道用户是否是使用elasticsearch和redis的朋友?

How to know if user is a friend using elasticsearch and redis?

我在 Elasticsearch 中有用户数据,在 Redis 中有每个用户的朋友作为 ZSET。客户端应用程序可以从弹性搜索其他用户,但我想显示搜索到的用户是否是朋友。在将用户返回客户端之前使用 EXISTS 检查 ZSET 中的用户密钥是否是一种好方法,然后显示用户是否是朋友。或者是否有完全不同的方法来做到这一点。在 ZSET 中检查搜索到的用户也是一项昂贵的操作。什么是可扩展且高效的方法。

这取决于用户的平均朋友数。

如果平均值较低(比方说低于 300),您可以使用当前的解决方案,这很好。

但如果平均值更高,您可以为用户之间的每个关系设置唯一键,如下所示:

set user-10:friend-of:user-11 true
set user-x:friend-of:user-y true

当您想识别用户 20 是否是用户 30 的朋友时,只需生成密钥并检查它是否存在于 Redis 上即可。