Caching 如何使用简单的写/删除方法为不同的用户组织Redis缓存
在一个应用程序中,我们在一个大的postgres数据集上运行一些复杂的查询。由于基础数据仅每月更新一次,因此我们根据用于计算的参数缓存结果(当前为postgres)。我们最终得到一个简单的键/值表: 键-表示计算参数的哈希JSON对象 值查询JSON结果 到目前为止,很简单——但是,每个客户都有这个表,在postgres中有自己的名称空间 客户上传缓存表中的新数据后,将在查询时删除并重新填充 为了在redis中实现这一点,我找到了不同的可能方法:Caching 如何使用简单的写/删除方法为不同的用户组织Redis缓存,caching,redis,Caching,Redis,在一个应用程序中,我们在一个大的postgres数据集上运行一些复杂的查询。由于基础数据仅每月更新一次,因此我们根据用于计算的参数缓存结果(当前为postgres)。我们最终得到一个简单的键/值表: 键-表示计算参数的哈希JSON对象 值查询JSON结果 到目前为止,很简单——但是,每个客户都有这个表,在postgres中有自己的名称空间 客户上传缓存表中的新数据后,将在查询时删除并重新填充 为了在redis中实现这一点,我找到了不同的可能方法: 根据谷歌集团的评论,每个客户使用一个数据库,如果
customer:params_hash
,当需要删除数据时,如果它们与模式customer:
匹配,则扫描所有键。此处描述了必要的方法和脚本:这三个是唯一的选择吗?在redis中,哪一个最合适、最适合?解决方案3似乎是最好的(您将每月删除一次密钥)。但请记住,不建议在生产服务器上使用“keys”命令。我认为您不需要自动删除这些密钥,应该使用: 另外,只需在production env中对新解决方案进行基准测试,因为我认为旧解决方案的主要瓶颈不是缓存引擎(postgresql、redis或memcached),而是网络和解码。()