我在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上就可以了。