Yii2.0中使用redis作为缓存
背景
因为业务升级,原来的单服务器升级为多服务器,并做负载均衡部署,但是发现上线后数据经常出现问题,后排查发现是缓存问题,因为之前用到是yii2.0框架中默认的缓存方式,把数据缓存到了代码所在服务器,导致负载均衡的各服务器之间缓存不同步,为解决这个问题,打算替换redis为文件缓存
安装redis插件
- 首先安装composer
- 配置项目中的composer.json文件
我这里是这样加的:
"require": {
"php": ">=5.4.0",
"yiisoft/yii2": "~2.0.6",
"yiisoft/yii2-bootstrap": "~2.0.0",
"yiisoft/yii2-swiftmailer": "~2.0.0",
"phpoffice/phpexcel": "*",
"yiisoft/yii2-redis": "^2.0"
},
- 运行composer update使配置生效(这一步我发现,不仅仅会更新redis,其他的配置都会更新)
yii框架配置和使用
我这里的版本是2.0
- 首先配置web.php配置文件
'cache' => [
'class' => 'yii\redis\cache',
'redis' => [
'hostname' => 'localhost',//这里Windows可以更换为127.0.0.1
'port' => 6379,
'database' => 0,
]
],
- 代码中使用缓存
Yii::$app->cache->set('test',array(1,2,34)); //这里注意,保存的数据,无论是数组和对象,都会压缩为字符串存储起来,不过不影响使用
$res = Yii::$app->cache->get('test');
var_dump($res);die;