首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在yii2应用程序中同时使用mysql和redis

在yii2应用程序中同时使用mysql和redis
EN

Stack Overflow用户
提问于 2018-06-03 03:29:06
回答 1查看 298关注 0票数 2

我正在构建一个CRM系统,它应该允许不同的用户进行不同的访问,所以我需要在面板中进行复杂的身份验证和通知。但是主系统应该使用REDIS。我已经安装了yii2 redis插件,并且在db.php中有如下配置(mysql配置):

<?php
return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=yii2basic',
    'username' => 'root',
    'password' => '',
    'charset' => 'utf8',
    // Schema cache options (for production environment)
    //'enableSchemaCache' => true,
    //'schemaCacheDuration' => 60,
    //'schemaCache' => 'cache',
];

在web.php中:

$db = require __DIR__ . '/db.php';
$config = [
    'id' => 'basic',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'aliases' => [
        '@bower' => '@vendor/bower-asset',
        '@npm'   => '@vendor/npm-asset',
    ],

'components' => [
        'redis'         => [

            'class'    => 'yii\redis\Connection',

            'hostname' => 'localhost',

            'port'     => 6379,

            'database' => 0,

        ],
     ],
     'db' => $db,

我如何区分我的模型,以使用mysql或redis?我假设如果我在components部分指定redis,那么整个应用程序都使用redis db。我可以使用具有多个key值的redis,但是由于redis会在达到最大内存时丢弃键,所有注册用户和他们的配置文件都会被忽略,所以我认为我应该使用mysql来处理这个basci内容(带角色的数据库、身份验证、配置文件)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-03 03:39:55

return [
   'components' => [
      'db1' => [
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=localhost;dbname=db1name', //maybe other dbms such as psql,...
        'username' => 'db1username',
        'password' => 'db1password',
    ],
    'db2' => [
        'class' => 'yii\redis\Connection',
        'dsn' => 'YOURCONFIG', 
        'port' => '6379',
        'password' => 'db2password',
        'username' => 'db2username',
    ],
  ],
];

然后尝试使用

// To get from db1
Yii::$app->db1->createCommand((new \yii\db\Query)->select('*')->from('tbl_name'))->queryAll()

// To get from db2
Yii::$app->db2->createCommand((new \yii\db\Query)->select('*')->from('tbl_name'))->queryAll();

对于模型中的活动记录,请编写

// db1
public function getDb() {
    return Yii::$app->db1;
}

//Or db2
public function getDb() {
    return Yii::$app->db2;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50660429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档