缓存

框架提供了可基于filememcacheredis三种缓存类型,通过修改config/config.php进行设置,cache_type参数用于切换,完整示例如下:

// config/config.php
'cache' => array(
    'enable'     => true,
    'prefix'     => 'mc_df_',
    'cache_type' => 'redis',      // 缓存类型 file、memcache、redis
    'cache_time' => 7200,
    'cache_name' => 'cfc_data',
    'serialize' => true,          // 开启redis自动序列化存储
    'memcache' => array(
        'timeout' => 1,
        'servers' => array(
            array( 'host' => '127.0.0.1', 'port' => 11211, 'weight' => 1 ),
        )
    ),
    // redis目前只支持单台服务器
    'redis' => array(
        'timeout' => 30,
        'server' => array( 'host' => '127.0.0.1', 'port' => 6379, 'pass' => 'foobared')
    ),

    'session' => array(
        'type'   => 'cache',      // session 缓存类型 default、cache、mysql
        'expire' => 1440,         // session 回收时间 默认24分钟:1440、一天:86400
    )
)

Cache支持setgetdelttlincdec等简单操作方法

// 添加缓存
cache::set('name', 'kali');

// 获取缓存
$name = cache::get('name');

// 删除缓存
$name = cache::del('name');

// 添加缓存并设置一个小时有效期
cache::set('email', 'kaliphp@gmail.com', 3600);

// 自增缓存,默认增加1
$num = cache::inc('num');

// 自减缓存,默认减少1
$num = cache::dec('num');

Cache还支持在知道使用何种缓存的时候使用其方法,比如driver是Redis,那么我们可以直接使用Redis的其他方法

// 添加队列
cache::lpush('new-list', '1111');

// 弹出队列
cache::rpop('new-list');

Redis

当我们缓存没有使用Redis的情况下,但是又需要用到Redis的队列功能的时候,我们可以使用 cls_redis.php 类进行操作,配置请看上面的Cache中的Redis部分

// 添加队列
cls_redis::instance()->lpush('new-list', '1111');

// 弹出队列
cls_redis::instance()->rpop('new-list');

Redis类不支持主从操作,但是支持多实例,所以在使用的时候可以通过不同配置创建多个实例来操作Redis

// 默认实例,调用默认配置
$redis1 = cls_redis::instance();

// 添加一个实例,手动配置
$config = [
    'host' => '192.168.0.2', 
    'port' => 6379,
    'pass' => 'foobared'
];
$redis2 = cls_redis::instance('redis2', $config);

Last updated