PHPackages                             ienaga/phalcon-redis-plugin - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Caching](/categories/caching)
4. /
5. ienaga/phalcon-redis-plugin

ActiveLibrary[Caching](/categories/caching)

ienaga/phalcon-redis-plugin
===========================

RedisPlugin for Phalcon (The correspondence of MySQL sharding.)

3.0.0(7y ago)165.6k2MITPHPPHP &gt;=7.0

Since Apr 27Pushed 7y ago1 watchersCompare

[ Source](https://github.com/ienaga/RedisPlugin)[ Packagist](https://packagist.org/packages/ienaga/phalcon-redis-plugin)[ Docs](https://github.com/ienaga/RedisPlugin)[ RSS](/packages/ienaga-phalcon-redis-plugin/feed)WikiDiscussions master Synced 2mo ago

READMEChangelogDependencies (3)Versions (4)Used By (0)

RedisPlugin for Phalcon (The correspondence of MySQL sharding.)
===============================================================

[](#redisplugin-for-phalcon-the-correspondence-of-mysql-sharding)

[![Build Status](https://camo.githubusercontent.com/3fe7926f8afb4a6471392fc6c9a415d792a74fc63bc6c8f42d706f008e7b1f98/68747470733a2f2f7472617669732d63692e6f72672f69656e6167612f5265646973506c7567696e2e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/ienaga/RedisPlugin)

[![Latest Stable Version](https://camo.githubusercontent.com/de3f384892b229b67a2c146f89b2e5023579656cb3b254d89eea90d674e2ac0c/68747470733a2f2f706f7365722e707567782e6f72672f69656e6167612f7068616c636f6e2d72656469732d706c7567696e2f762f737461626c65)](https://packagist.org/packages/ienaga/phalcon-redis-plugin) [![Total Downloads](https://camo.githubusercontent.com/cdbef7208ed5a11c1f29596c57fccc7a92fcd6a030f4eae62f744761846d09e8/68747470733a2f2f706f7365722e707567782e6f72672f69656e6167612f7068616c636f6e2d72656469732d706c7567696e2f646f776e6c6f616473)](https://packagist.org/packages/ienaga/phalcon-redis-plugin) [![Latest Unstable Version](https://camo.githubusercontent.com/e73bedd48f3cef5027f79eefe2975c5e0917207f6c294c7f1ff3bfbeb9d27685/68747470733a2f2f706f7365722e707567782e6f72672f69656e6167612f7068616c636f6e2d72656469732d706c7567696e2f762f756e737461626c65)](https://packagist.org/packages/ienaga/phalcon-redis-plugin) [![License](https://camo.githubusercontent.com/66c6e3e9e17c25ac0e1cdbbdd7869b52555f18455b23229e8d53c6b1cd6ac24a/68747470733a2f2f706f7365722e707567782e6f72672f69656e6167612f7068616c636f6e2d72656469732d706c7567696e2f6c6963656e7365)](https://packagist.org/packages/ienaga/phalcon-redis-plugin)

Composer
========

[](#composer)

```
{
    "require": {
       "ienaga/phalcon-redis-plugin": "3.*"
    }
}
```

Version
-------

[](#version)

```
PHP: 7.0.x, 7.1.x, 7.2.x
Phalcon: 3.x

```

phpredis and YAML
-----------------

[](#phpredis-and-yaml)

```
sudo yum install libyaml libyaml-devel php-pecl-yaml php-pecl-redis

```

app/config/config.php
---------------------

[](#appconfigconfigphp)

### @see [PhalconConfig](https://github.com/ienaga/PhalconConfig)

[](#see-phalconconfig)

```
$loader = new Phalcon\Config\Adapter\Yaml\Loader();
return $loader
    ->setIgnore(["routing"]) // ignore yml names
    ->setEnvironment("stg") // default dev
    ->setBasePath(realpath(dirname(__FILE__) . "/../.."))
    ->load();
```

app/config/database.yml
-----------------------

[](#appconfigdatabaseyml)

```
prd:
stg:
dev:
  database:
    dbAdminMaster:
      adapter:  Mysql
      host:     127.0.0.1
      port:     3301
      username: root
      password: XXXXX
      dbname:   admin
      charset:  utf8
      transaction: true
    dbAdminSlave:
      adapter:  Mysql
      host:     127.0.0.1
      port:     3311
      username: root
      password: XXXXX
      dbname:   admin
      charset:  utf8
      transaction: false
    dbCommonMaster:
      adapter:  Mysql
      host:     127.0.0.1
      port:     3301
      username: root
      password: XXXXX
      dbname:   common
      charset:  utf8
      transaction: false
    dbCommonSlave:
      adapter:  Mysql
      host:     127.0.0.1
      port:     3311
      username: root
      password: XXXXX
      dbname:   common
      charset:  utf8
      transaction: false
    dbUser1Master:
      adapter:  Mysql
      host:     127.0.0.1
      port:     3306
      username: root
      password: XXXXX
      dbname:   user
      charset:  utf8
      transaction: true
    dbUser1Slave:
      adapter:  Mysql
      host:     127.0.0.1
      port:     3316
      username: root
      password: XXXXX
      dbname:   user
      charset:  utf8
      transaction: false
    dbUser2Master:
      adapter:  Mysql
      host:     127.0.0.1
      port:     3307
      username: root
      password: XXXXX
      dbname:   user
      charset:  utf8
      transaction: true
    dbUser2Slave:
      adapter:  Mysql
      host:     127.0.0.1
      port:     3317
      username: root
      password: XXXXX
      dbname:   user
      charset:  utf8
      transaction: false
```

app/config/redis.yml
--------------------

[](#appconfigredisyml)

```
prd:
stg:
dev:
  redis:
    # log出力
    logger:
      logging: true # logging ON OFF
      output:  /var/www/project/log/sql.log # output log file path

    enabled:   true # false => cache off
    autoIndex: true # false => auto index off

    # 対象のカラムがModelに存在したら使用。上から順に優先。存在が確認できた時点でbreak
    prefix:
      columns:  # e.g. user_id, id, social_id, [account, password]
        - user_id
        - social_id
        - [account, password]
        - id

    # 共通のマスタがあれば登録「table_」と共有部分だけの記載はtable_*と同義
    # common
    common:
      enabled: false
      service:
        name: dbCommon

      dbs: # e.g.  master_, access_log
        - mst_

    # Sharding設定
    shard:
      enabled: true # Shardingを使用しない時はfalse

    # Shardingのマスタ設定
    admin:
      service:
        name: dbAdmin

    # Shardingのマスタ設定
    admin:
      service:
        name: dbAdmin
      # ユーザマスタ
      # e.g.
      #    CREATE TABLE IF NOT EXISTS `admin_user` (
      #      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      #      `social_id` varchar(255) NOT NULL,
      #      `admin_db_config_id` int(10) unsigned NOT NULL,
      #      PRIMARY KEY (`id`)
      #    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
      model: AdminUser # e.g. AdminUser or namespace \Project\AdminUser
      column: admin_db_config_id # e.g. admin_db_config_id

      # ユーザマスタの登録「table_」と共有部分だけの記載はtable_*と同義
      dbs: # e.g. admin_, user_ranking
        - admin_

      # Shardingをコントロールするテーブルとカラム
      #
      # e.g.
      #    CREATE TABLE IF NOT EXISTS `admin_db_config` (
      #      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      #      `name` varchar(50) NOT NULL,
      #      `gravity` tinyint(3) unsigned NOT NULL DEFAULT '0',
      #      PRIMARY KEY (`id`)
      #    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
      #    INSERT INTO `admin_db_config` (`id`, `name`, `gravity`) VALUES
      #    (1, 'dbUser1', 50),
      #    (2, 'dbUser2', 50);
      # shard config master
      control:
        model: AdminDbConfig # e.g. AdminConfigDb or namespace \Project\AdminConfigDb
        column: name # e.g. name

    # schemaをキャッシュ
    metadata:
      host:   127.0.0.1
      port:   6379
      select: 0

    # servers
    server:
      dbMaster:
        host: 127.0.0.1
        port: 6379
        select: 0 # redis select [データベースインデックス]
      dbSlave:
        host: 127.0.0.1
        port: 6379
        select: 0
      dbCommonMaster:
        host: 127.0.0.1
        port: 6379
        select: 0
      dbCommonSlave:
        host: 127.0.0.1
        port: 6379
        select: 0
      dbUser1Master:
        host: 127.0.0.1
        port: 6379
        select: 0
      dbUser1Slave:
        host: 127.0.0.1
        port: 6379
        select: 0
      dbUser2Master:
        host: 127.0.0.1
        port: 6379
        select: 0
      dbUser2Slave:
        host: 127.0.0.1
        port: 6379
        select: 0
```

app/config/services.php
-----------------------

[](#appconfigservicesphp)

```
/**
 * Database connection is created based in the parameters defined in the configuration file
 */
$dbService = new \Phalcon\Mvc\Model\Adapter\Redis\Service();
$dbService->registration();

/**
 * If the configuration specify the use of metadata adapter use it or use memory otherwise
 */
$di->setShared('modelsMetadata', function () {
    return new \Phalcon\Mvc\Model\Adapter\Redis\Metadata\Redis(
        $this->getConfig()
            ->get("redis")
            ->get("metadata")
            ->toArray()
    );
});
```

findFirst
---------

[](#findfirst)

```
class Robot extends \Phalcon\Mvc\Model\Adapter\Redis\Model {}

# findFirst
$robot = Robot::criteria()
    ->add('id', $id)
    ->add('type', $type, Criteria::NOT_EQUAL)
    ->group('type')
    ->findFirst();
```

find
----

[](#find)

```
class Robot extends \Phalcon\Mvc\Model\Adapter\Redis\Model {}

$robot = Robot::criteria()
    ->add('id', array($id), Criteria::IN)
    ->add('type', array($start, $end), Criteria::BETWEEN)
    ->limit(10, 5) // limit, offset
    ->order('type DESC')
    ->find();
```

cache Control
-------------

[](#cache-control)

```
class Robot extends \Phalcon\Mvc\Model\Adapter\Redis\Model {}

$robot = Robot::criteria()
    ->add('id', array($id), Criteria::IN)
    ->add('type', array($start, $end), Criteria::BETWEEN)
    ->limit(10, 30)
    ->order('type DESC')
    ->cache(false)
    ->find();
```

autoIndex Control
-----------------

[](#autoindex-control)

```
class Robot extends \Phalcon\Mvc\Model\Adapter\Redis\Model {}

$robot = Robot::criteria()
    ->add('id', array($id), Criteria::IN)
    ->add('type', array($start, $end), Criteria::BETWEEN)
    ->limit(10, 30)
    ->order('type DESC')
    ->autoIndex(false)
    ->find();
```

save
----

[](#save)

```
class UserItem extends \Phalcon\Mvc\Model\Adapter\Redis\Model {}

$userItem = new UserItem();
$userItem->setId($id);
$userItem->setType($type);
$userItem->save();
```

update
------

[](#update)

```
class Robot extends \Phalcon\Mvc\Model\Adapter\Redis\Model {}

Robot::criteria()
    ->add("user_status", 1)
    ->add("power", 100)
    ->set("status", 2)
    ->set("name", "robot")
    ->update();
```

```
UPDATE `robot` SET `status` = 2, `name` = "robot" WHERE `user_status` = 1 AND `power` = 100;
```

delete
------

[](#delete)

```
class Robot extends \Phalcon\Mvc\Model\Adapter\Redis\Model {}

Robot::criteria()
    ->add("user_status", 1)
    ->add("power", 100, Robot::GREATER_EQUAL)
    ->delete();
```

```
DELETE FROM `robot` WHERE `user_status` = 1 AND `power` >= 100;
```

count
-----

[](#count)

```
class Robot extends \Phalcon\Mvc\Model\Adapter\Redis\Model {}

$count = Robot::criteria()
    ->add("user_status", 1)
    ->add("power", 100)
    ->add("status", 2)
    ->count();
```

sum
---

[](#sum)

```
class Robot extends \Phalcon\Mvc\Model\Adapter\Redis\Model {}

$sum = Robot::criteria()
    ->add("user_status", 1)
    ->sum("price");
```

autoIndex
---------

[](#autoindex)

e.g. PRIMARY = type, INDEX = id, status ※autoIndexをtrueにする事で、PRIMARYもしくはINDEXに一番マッチするクエリに並び替えて発行。

```
class Robot extends \Phalcon\Mvc\Model\Adapter\Redis\Model {}

$robot = Robot::criteria()
    ->limit(10)
    ->add("type", $type)
    ->addGroup("type")
    ->addOrder("id", "DESC")
    ->add("status", $status)
    ->add("id", $id)
    ->find();
```

```
SELECT * FROM `robot`
WHERE `id` = :id:
AND `type` = :type:
AND `status` = :status:
GROUP BY `type`
ORDER BY `id` DESC
LIMIT 10
```

Index Test Mode
---------------

[](#index-test-mode)

テストモードをtrueにしてSQLを発行。 どのIndexにもマッチしない時はErrorを出力。

- 単体

```
class Robot extends \Phalcon\Mvc\Model\Adapter\Redis\Model {}

$robot = Robot::criteria()
    ->limit(10)
    ->add("type", $type)
    ->addGroup("type")
    ->addOrder("id", "DESC")
    ->add("status", $status)
    ->add("id", $id)
    ->test(true)
    ->find();
```

- 全体

```
class Robot extends \Phalcon\Mvc\Model\Adapter\Redis\Model {}

\RedisPlugin\Mvc\Model::test(true);

$robot = Robot::criteria()
    ->limit(10)
    ->add("type", $type)
    ->addGroup("type")
    ->addOrder("id", "DESC")
    ->add("status", $status)
    ->add("id", $id)
    ->find();
```

###  Health Score

33

—

LowBetter than 75% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity26

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity60

Established project with proven stability

 Bus Factor1

Top contributor holds 66.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~538 days

Total

3

Last Release

2590d ago

Major Versions

1.0.0 → 2.0.02018-09-21

2.0.0 → 3.0.02019-04-08

### Community

Maintainers

![](https://www.gravatar.com/avatar/cd28b76fa23613f35d60d5e08e858a6ccb4a548ca199f750b1cf18dc98087226?d=identicon)[ienaga](/maintainers/ienaga)

---

Top Contributors

[![thomas-sonicmoov](https://avatars.githubusercontent.com/u/84434672?v=4)](https://github.com/thomas-sonicmoov "thomas-sonicmoov (188 commits)")[![ienaga](https://avatars.githubusercontent.com/u/4123454?v=4)](https://github.com/ienaga "ienaga (90 commits)")[![minatosonic](https://avatars.githubusercontent.com/u/29032194?v=4)](https://github.com/minatosonic "minatosonic (3 commits)")

---

Tags

mysqlphalconphp7redisredisphalcon

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/ienaga-phalcon-redis-plugin/health.svg)

```
[![Health](https://phpackages.com/badges/ienaga-phalcon-redis-plugin/health.svg)](https://phpackages.com/packages/ienaga-phalcon-redis-plugin)
```

###  Alternatives

[predis/predis

A flexible and feature-complete Redis/Valkey client for PHP.

7.8k305.7M2.4k](/packages/predis-predis)[snc/redis-bundle

A Redis bundle for Symfony

1.0k39.4M67](/packages/snc-redis-bundle)[clue/redis-protocol

A streaming Redis protocol (RESP) parser and serializer written in pure PHP.

5311.0M13](/packages/clue-redis-protocol)[cache/redis-adapter

A PSR-6 cache implementation using Redis (PhpRedis). This implementation supports tags

523.9M27](/packages/cache-redis-adapter)[enqueue/redis

Message Queue Redis Transport

405.5M25](/packages/enqueue-redis)[rtcamp/nginx-helper

Cleans nginx's fastcgi/proxy cache or redis-cache whenever a post is edited/published. Also provides cloudflare edge cache purging with Cache-Tags.

23817.0k1](/packages/rtcamp-nginx-helper)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
