基本配置文件:
<?php $CONFIG_REDIS_DEFAULT = array( 'master' => array('127.0.0.1',6379), 'slaver' => array('127.0.0.1',6379) ); ?>
操作类:
<?php class FSRedis { const RD_MASTER = 'master'; const RD_SLAVER = 'slaver'; //默认key private static $mKey = ''; //实例对象 private static $mInstance = array(); //服务器配置 private $_serverConfig = array(); private $_redisMaster; private $_redisSlaver; public static function Instance($defaultConfig = array()) { self::$mKey = md5(serialize($defaultConfig)); if (isset( self::$mInstance[self::$mKey])) { return self::$mInstance[self::$mKey]; } return self::$mInstance[self::$mKey] = new FSRedis($defaultConfig); } public function __construct($defaultConfig = array()) { $this->_serverConfig = $defaultConfig; } private function createRedisInstance($config = array()) { if (count($config) < 2) { throw new Exception(strtr('Config invalid', array())); } $redis = new Redis(); $redis->connect($config[0], $config[1]); return $redis; } public function getRedisMaster() { if ($this->_redisMaster === null) { $this->_redisMaster = $this->createRedisInstance($this->_serverConfig[self::RD_MASTER]) ; } return $this->_redisMaster; } public function getRedisSlave() { if ($this->_redisSlaver === null) { $this->_redisSlaver = $this->createRedisInstance($this->_serverConfig[self::RD_SLAVER]) ; } return $this->_redisSlaver; } public function get($key, $master = false) { if(empty($key)) { return false; } $func = is_array($key) ? 'mGet' : 'get'; if($master) { $redis = $this->getRedisMaster(); }else{ $redis = $this->getRedisSlave(); } if(!$redis) { return false; } $value = $redis->$func($key); if($value === false) { return false; } return $value; } public function set($key, $value, $expire = 0) { if(empty($key)) { return false; } $redis = $this->getRedisMaster(); if(!$redis) { return false; } if($expire) { $ret = $redis->setex($key, $expire, $value); } else { $ret = $redis->set($key, $value); } if($ret === false) { return false; } return $ret; } /** * 条件形式设置缓存,如果 key 不存时就设置,存在时设置失败 * * @param string $key 缓存KEY * @param string $value 缓存值 * @return boolean */ public function setnx($key, $value){ return $this->getRedisMaster()->setnx($key, $value); } /** * 删除缓存 * * @param string || array $key 缓存KEY,支持单个健:"key1" 或多个健:array('key1','key2') * @return int 删除的健的数量 */ public function remove($key){ return $this->getRedisMaster()->delete($key); } public function __call($name,$value) { /** * 读写分离 */ $redisWrite = array('zAdd','zRem','hIncrBy','info','rename', 'rpush', 'lpop','hMset', 'sadd', 'srem', 'incr', 'spop'); $redisRead = array('zCard','zRank','zrevRank','zRevRange','hLen','hKeys','hVals','zRange','hMget','hGetAll', 'lrange', 'llen','mGet', 'smembers', 'sismember', 'scard', 'keys'); if(in_array($name,$redisWrite)) { //master $redis = $this->getRedisMaster(); return call_user_func_array(array($redis,$name),$value); } elseif(in_array($name,$redisRead)) { //slave $redis = $this->getRedisSlave(); return call_user_func_array(array($redis,$name),$value); } } public function close() { $this->_redisMaster = null; $this->_redisSlaver = null; } } ?>
相关推荐
* redis主从架构的jedis客户端管理类,大概1000多行代码左右 * 1 支持主从复制key/value,pop/push,pub/sub,读/写分离等功能的灾难失败自动选择和恢复 * 2 可以选择读写分离功能,主写从读,默认不启用,都使用主服务...
* redis主从架构的jedis客户端管理类,大概1000行代码左右 * 1 支持主从复制key/value,pop/push,pub/sub,读/写分离等功能的灾难失败自动选择和恢复 * 2 可以选择读写分离功能,主写从读,默认不启用,都使用主服务进行...
区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对...
区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类...
区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这...
区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类...
区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这...
区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类...
区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类...
区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类...
区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类...
区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类...
区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类...
区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类...
区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了...
区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类...
redis是非关系型数据库Nosql的代表,这类数据库主要有以下特点:非关系型的(sql语句对它不起作用,不需要建表存数据,它是直接存储),分布式(主从复制),开源的水平可扩展的。优点:它可以处理超大量的数据,...
主从模式是三种模式中最简单的,在主从复制中,数据库分为两类:主数据库(master)和从数据库(slave)。 其中主从复制有如下特点: * 主数据库可以进行读写操作,当读写操作导致数据变化时会自动将数据同步给从数据库 ...
1、考虑之前做的项目都是CI框架,如果全部推翻,将会有超级多的东西需要修改,所以我将CI引擎替换,但是SuperCI对外提供的调用方式不变, 2、框架支持4层架构,Controller、Business、Dao、View 层...9、支持Redis主从
在数据库中创建steam库,然后导入sql文件,修改相应的的配置,关于主从配置请自行百度啦,运行起项目,然后需要把`GameService`类以及`CommentService`类里面的`afterPropertiesSet`方法里面的代码注释掉,这是第一...