我正在开发一个ASP.NET Web Api项目。对于我系统的一部分,我需要一个键值存储来存储字符串。键和值都是字符串(尽管它们可以很长)。键和值都是唯一的。
最初,我开始使用Redis
,问题是我需要在商店内不仅通过密钥而且通过值进行搜索(确定值是否存在,在这种情况下无需返回密钥) 。
基本上,我有两个选项,第一个是使用项目的默认数据库 - PostgreSQL
。否则我应该选择另一个支持上述操作的键值存储。你会建议哪个选项?如果第二个,哪个商店支持这样的操作?在性能方面哪个选项更好?
答案 0 :(得分:1)
您需要的不是另一个数据存储,而是一个值索引。即使您使用postgresql或mongodb或其他东西,您仍然需要构建一个值索引来进行有效的值搜索。
对于redis解决方案,您可以使用额外的SET
来存储所有值。如果要检查值是否存在,只需查找SET
即可。当然,每当你添加一对新的kv时,你还需要更新SET
。
此外,使用Lua脚本,您可以在事务中进行两次更新操作。