mirror of
				https://github.com/yiisoft/yii2.git
				synced 2025-11-04 06:37:55 +08:00 
			
		
		
		
	@ -4,8 +4,7 @@ Yii Framework 2 redis extension Change Log
 | 
			
		||||
2.0.1 under development
 | 
			
		||||
-----------------------
 | 
			
		||||
 | 
			
		||||
- no changes in this release.
 | 
			
		||||
 | 
			
		||||
- Bug #4745: value of simple string returns was ignored by redis client and `true` is returned instead, now only `OK` will result in a `true` while all other values are returned as is (cebe)
 | 
			
		||||
 | 
			
		||||
2.0.0 October 12, 2014
 | 
			
		||||
----------------------
 | 
			
		||||
 | 
			
		||||
@ -337,7 +337,8 @@ class Connection extends Component
 | 
			
		||||
     * @return array|bool|null|string Dependent on the executed command this method
 | 
			
		||||
     * will return different data types:
 | 
			
		||||
     *
 | 
			
		||||
     * - `true` for commands that return "status reply".
 | 
			
		||||
     * - `true` for commands that return "status reply" with the message `'OK'` or `'PONG'`.
 | 
			
		||||
     * - `string` for commands that return "status reply" that does not have the message `OK` (since version 2.0.1).
 | 
			
		||||
     * - `string` for commands that return "integer reply"
 | 
			
		||||
     *   as the value is in the range of a signed 64 bit integer.
 | 
			
		||||
     * - `string` or `null` for commands that return "bulk reply".
 | 
			
		||||
@ -363,6 +364,11 @@ class Connection extends Component
 | 
			
		||||
        return $this->parseResponse(implode(' ', $params));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param string $command
 | 
			
		||||
     * @return mixed
 | 
			
		||||
     * @throws Exception on error
 | 
			
		||||
     */
 | 
			
		||||
    private function parseResponse($command)
 | 
			
		||||
    {
 | 
			
		||||
        if (($line = fgets($this->_socket)) === false) {
 | 
			
		||||
@ -372,8 +378,11 @@ class Connection extends Component
 | 
			
		||||
        $line = mb_substr($line, 1, -2, '8bit');
 | 
			
		||||
        switch ($type) {
 | 
			
		||||
            case '+': // Status reply
 | 
			
		||||
 | 
			
		||||
                return true;
 | 
			
		||||
                if ($line === 'OK' || $line === 'PONG') {
 | 
			
		||||
                    return true;
 | 
			
		||||
                } else {
 | 
			
		||||
                    return $line;
 | 
			
		||||
                }
 | 
			
		||||
            case '-': // Error reply
 | 
			
		||||
                throw new Exception("Redis error: " . $line . "\nRedis command was: " . $command);
 | 
			
		||||
            case ':': // Integer reply
 | 
			
		||||
 | 
			
		||||
@ -53,4 +53,30 @@ class RedisConnectionTest extends RedisTestCase
 | 
			
		||||
        $db->set('hi', $data);
 | 
			
		||||
        $this->assertEquals($data, $db->get('hi'));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * https://github.com/yiisoft/yii2/issues/4745
 | 
			
		||||
     */
 | 
			
		||||
    public function testReturnType()
 | 
			
		||||
    {
 | 
			
		||||
        $redis = $this->getConnection();
 | 
			
		||||
        $redis->executeCommand('SET',['key1','val1']);
 | 
			
		||||
        $redis->executeCommand('HMSET',['hash1','hk3','hv3','hk4','hv4']);
 | 
			
		||||
        $redis->executeCommand('RPUSH',['newlist2','tgtgt','tgtt','44',11]);
 | 
			
		||||
        $redis->executeCommand('SADD',['newset2','segtggttval','sv1','sv2','sv3']);
 | 
			
		||||
        $redis->executeCommand('ZADD',['newz2',2,'ss',3,'pfpf']);
 | 
			
		||||
        $allKeys = $redis->executeCommand('KEYS',['*']);
 | 
			
		||||
        sort($allKeys);
 | 
			
		||||
        $this->assertEquals(['hash1', 'key1', 'newlist2', 'newset2', 'newz2'], $allKeys);
 | 
			
		||||
        $expected = [
 | 
			
		||||
            'hash1' => 'hash',
 | 
			
		||||
            'key1' => 'string',
 | 
			
		||||
            'newlist2' => 'list',
 | 
			
		||||
            'newset2' => 'set',
 | 
			
		||||
            'newz2' => 'zset',
 | 
			
		||||
        ];
 | 
			
		||||
        foreach($allKeys as $key) {
 | 
			
		||||
            $this->assertEquals($expected[$key], $redis->executeCommand('TYPE',[$key]));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user