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

标签 postgresql redis key-value

我正在开发一个 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/

相关文章:

postgresql - 如何使用带有所有参数的 NSIS 安装 postgres?

sql - 选择事务隔离级别

Redis 使用查询更新

PHP key=value 字符串转数组

Python 正则表达式屏蔽字符串中的键值对

json - 尝试使用带有更新/插入的 RETURNING 从 plpgsql 函数返回时出错

sql - 将 SQL 结果拆分为最大大小 = n 的组

node.js - Redis 超时错误

python - 我应该使用什么数据类型作为 redis-py 函数的参数?

C# - 将 Int 转换为 KeyValue 到 String