我正在开发一个 ASP.NET Web Api 项目。对于我系统的一部分,我需要一个键值存储来存储字符串。键和值都是字符串(尽管它们可以是长字符串)。键和值都是唯一的。
最初,我开始使用Redis
,问题是我需要在store中不仅通过key而且通过value进行搜索(判断value是否存在,不需要返回key in这个情况)。
基本上,我有两个选择,第一个是为我的项目使用默认数据库 - PostgreSQL
。否则我应该选择另一个支持上述操作的键值存储。你会建议哪个选项?如果是第二个,哪家店支持这样的操作?哪个选项在性能方面更好?
最佳答案
您需要的不是另一个数据存储,而是一个值(value)索引。即使你使用postgresql或者mongodb或者其他什么的,你仍然需要为值建立一个索引来进行高效的值搜索。
对于redis方案,你可以使用一个额外的SET
来存储所有的值。当你想检查一个值是否存在时,只需查找 SET
。当然,每当你添加一对新的 kv 时,你也需要更新 SET
。
另外,通过Lua脚本,您可以在一个事务中进行这两个更新操作。
关于postgresql - Key - 支持按值搜索的值存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44177572/