Key - 支持按值搜索的值存储

Key - Value store that supports searching by values

我正在开发一个 ASP.NET Web Api 项目。对于我系统的一部分,我需要一个键值存储来存储字符串。键和值都是字符串(尽管它们可以是长字符串)。键和值都是唯一的。

一开始我是用Redis开始的,问题是在store里面不仅要key搜索,还要value搜索(判断value是否存在,不需要return这种情况下的关键)。

基本上,我有两个选择,第一个是为我的项目使用默认数据库 - PostgreSQL。否则我应该选择另一个支持上述操作的键值存储。你会建议哪个选项?如果是第二个,哪家店支持这样的操作?哪个选项在性能方面更好?

您需要的不是另一个数据存储,而是一个价值索引。即使你用postgresql或者mongodb什么的,你还是需要为value建立一个索引来做高效的value search。

对于redis方案,可以使用一个额外的SET来存储所有的值。当你想检查一个值是否存在时,只需查找 SET。当然,每当你添加一对新的kv,你也需要更新SET.

此外,使用 Lua 脚本,您可以在一个事务中进行这两个更新操作。