我们可以在memcache中存储具有相同密钥的多个记录吗?

时间:2015-08-19 05:56:12

标签: php mysql memcached

我有两个数据库表,1。城市,2。详细信息。 “详细信息”表将“城市”作为外键引用。现在我可以根据城市将数据存储在memcache中(一个密钥存储多个详细记录)?如果是的话,我应该如何制作我的钥匙?如果没有,使用memcache做到最好的方法是什么?

2 个答案:

答案 0 :(得分:0)

DeNormalize - 针对来自城市表和详细信息表的city ket商店详细信息。这种非规范化很常见;虽然它带来了非规范化的相关缺点;主要是内存/空间相关。

如果没有,请引入合成密钥;使用自己的密钥维护城市表,但在城市记录中存储一个额外的密钥。将详细信息中的数据存储在另一个密钥中。这带来了相关的缺点,即必须对memcache进行两次查询。

答案 1 :(得分:0)

memcached是一个普通的键值存储,因此没有多关联性。 一种可能的解决方案是通过分隔符

按城市存储详细信息
<city>=<detail1>;<detail2>;

此方法的缺点 - 无法检查<city>密钥是否已包含服务器端的特定详细信息数据。

通常的方法是创建组合键

<city>:<detail_id>=<detail>

然而,没有办法得到这个城市的所有细节。