Php 为所有用户存储的缓存数据对于单个用户是相同的还是不同的?

Php 为所有用户存储的缓存数据对于单个用户是相同的还是不同的?,php,caching,yii2,memcached,Php,Caching,Yii2,Memcached,使用Yii framework2,我有一个动态的web内容,它的数据会根据用户的IP进行更改。我按照以下方式配置缓存组件 'cache' => [ 'class' => 'yii\caching\MemCache', 'keyPrefix' => 'myDomainName', 'defaultDuration' => 86400, // The cache will last for 86400 seconds = 1 day ], $

使用Yii framework2,我有一个动态的web内容,它的数据会根据用户的IP进行更改。我按照以下方式配置缓存组件

'cache' => [
     'class' => 'yii\caching\MemCache',
     'keyPrefix' => 'myDomainName',
     'defaultDuration' => 86400, // The cache will last for 86400 seconds = 1 day
 ],
$dependency = new \yii\caching\DbDependency(['sql' => 'SELECT COUNT(*) FROM shop WHERE ip = ' . $ip]);

$result = Shop::getDb()->cache(function ($db) use($ip) {
    return Shop::find()->where(['ip' => $ip])->all();
}, 86400, $dependency);
我使用ActiveRecord实现缓存,如下所示

'cache' => [
     'class' => 'yii\caching\MemCache',
     'keyPrefix' => 'myDomainName',
     'defaultDuration' => 86400, // The cache will last for 86400 seconds = 1 day
 ],
$dependency = new \yii\caching\DbDependency(['sql' => 'SELECT COUNT(*) FROM shop WHERE ip = ' . $ip]);

$result = Shop::getDb()->cache(function ($db) use($ip) {
    return Shop::find()->where(['ip' => $ip])->all();
}, 86400, $dependency);

事实上,每个用户都会看到基于其IP的不同内容。这是我第一次尝试在网站上实现缓存。我的问题是,缓存是为每个用户单独存储还是一个用户的缓存会覆盖另一个用户的缓存?请注意,从上面的代码中,DbDependency也基于用户的IP是动态的。

缓存数据对于应用程序的每个部分都是相同的。如果要“记住”用户的数据,可以使用会话。在会话中,可以存储每个用户的数据。当会话关闭时,数据将消失


请看:

这是一个很好的解决方案。但我通过使用缓存找到了另一个解决方案,但对一个单独的用户来说。缓存与密钥一起工作。因此,我按用户id获取数据,并使用此用户id作为缓存键。通过这样做,我可以使用不同的密钥存储多个缓存,每个缓存针对一个用户。我说得对吗?