Skip to content

arkhamvm/yii2-redis

 
 

Repository files navigation

Redis 3.x Cluster Cache, Session and ActiveRecord for Yii 2

This extension provides the redis key-value store support for the Yii framework 2.0. It includes a Cache and Session storage handler and implements the ActiveRecord pattern that allows you to store active records in redis.

For license information check the LICENSE-file.

Latest Stable Version Total Downloads Build Status

Requirements

At least redis version 3.0 is required for all components to work properly.

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require --prefer-dist heyanlong/yii2-redis

or add

"heyanlong/yii2-redis": "~2.0.0"

to the require section of your composer.json.

Configuration

To use this extension, you have to configure the Connection class in your application configuration:

return [
    //....
    'components' => [
        'redis' => [
            'class' => 'heyanlong\redis\Connection',
            'master' => [
                '10.155.20.169:6379',
                '10.155.20.167:6391',
                '10.155.20.168:6379',
                '10.155.20.167:6380',
//                'localhost:6379',
            ],
            'database' => 0,
        ],


    ]
];

Cluster Cache Configuration

By default Redis Cluster doesn't support MGET/MSET queries from several cluster nodes like this:

MGET {user10}.name {user10}.email {user10}.pass {user20}.name {user20}.email {user20}.pass someNotHashedKey

To implement this feature you can use ClusterCache:

return [
    //....
    'components' => [
		'class' => 'heyanlong\redis\ClusterCache',
        'redis' => [
            'class' => 'heyanlong\redis\Connection',
            'master' => [
                '10.155.20.169:6379',
                '10.155.20.167:6391',
                '10.155.20.168:6379',
                '10.155.20.167:6380',
//                'localhost:6379',
            ],
            'database' => 0,
        ],


    ]
];

ClusterCache will group keys by hash, and divide one query to several queries:

MGET {user10}.name {user10}.email {user10}.pass
MGET {user20}.name {user20}.email {user20}.pass
MGET someNotHashedKey

...execute them, and then merge results.

About

Yii 2 Redis Cluster extension.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%