diff --git a/library/think/cache/driver/Redis.php b/library/think/cache/driver/Redis.php index e31d38f7..23455a1d 100644 --- a/library/think/cache/driver/Redis.php +++ b/library/think/cache/driver/Redis.php @@ -15,7 +15,9 @@ use think\Cache; use think\Exception; /** - * Redis缓存驱动 + * Redis缓存驱动,适合单机部署、有前端代理实现高可用的场景,性能最好 + * 有需要在业务层实现读写分离、或者使用RedisCluster的需求,请使用Redisd驱动 + * * 要求安装phpredis扩展:https://github.com/nicolasff/phpredis * @author 尘缘 <130775@qq.com> */ @@ -26,8 +28,8 @@ class Redis 'host' => '127.0.0.1', 'port' => 6379, 'password' => '', - 'timeout' => false, - 'expire' => false, + 'timeout' => 0, + 'expire' => 0, 'persistent' => false, 'length' => 0, 'prefix' => '', @@ -48,9 +50,8 @@ class Redis } $func = $this->options['persistent'] ? 'pconnect' : 'connect'; $this->handler = new \Redis; - false === $this->options['timeout'] ? - $this->handler->$func($this->options['host'], $this->options['port']) : $this->handler->$func($this->options['host'], $this->options['port'], $this->options['timeout']); + if ('' != $this->options['password']) { $this->handler->auth($this->options['password']); } @@ -86,7 +87,7 @@ class Redis $name = $this->options['prefix'] . $name; //对数组/对象数据进行缓存处理,保证数据完整性 byron sampson $value = (is_object($value) || is_array($value)) ? json_encode($value) : $value; - if (is_int($expire)) { + if (is_int($expire) && $expire) { $result = $this->handler->setex($name, $expire, $value); } else { $result = $this->handler->set($name, $value); diff --git a/tests/thinkphp/library/think/cache/driver/cacheTestCase.php b/tests/thinkphp/library/think/cache/driver/cacheTestCase.php index ff123c13..c7bd407c 100644 --- a/tests/thinkphp/library/think/cache/driver/cacheTestCase.php +++ b/tests/thinkphp/library/think/cache/driver/cacheTestCase.php @@ -75,6 +75,9 @@ abstract class cacheTestCase extends \PHPUnit_Framework_TestCase $array = $cache->get('array_test'); $this->assertArrayHasKey('array_test', $array); $this->assertEquals('array_test', $array['array_test']); + + $result = $cache->set('no_expire', 1, 0); + $this->assertTrue($result); } /** diff --git a/tests/thinkphp/library/think/cache/driver/dbTest.php b/tests/thinkphp/library/think/cache/driver/dbTest.php deleted file mode 100644 index 9c896d4f..00000000 --- a/tests/thinkphp/library/think/cache/driver/dbTest.php +++ /dev/null @@ -1,43 +0,0 @@ - -// +---------------------------------------------------------------------- - -/** - * 数据库缓存驱动测试 - * @author mahuan - */ - -namespace tests\thinkphp\library\think\cache\driver; - -class dbTest extends cacheTestCase -{ - private $_cacheInstance = null; - - /** - * 基境缓存类型 - */ - protected function setUp() - { - //数据库缓存测试因为缺少数据库单元测试所以暂时跳过 - $this->markTestSkipped("暂时跳过测试。"); - \think\Cache::connect(array('type' => 'db', 'expire' => 2)); - } - - /** - * @return DbCache - */ - protected function getCacheInstance() - { - if (null === $this->_cacheInstance) { - $this->_cacheInstance = new \think\cache\driver\Db(); - } - return $this->_cacheInstance; - } -}