PHP redis 批量操作

Posted 激情@人生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP redis 批量操作相关的知识,希望对你有一定的参考价值。

参考网站

phpredis扩展 :https://github.com/phpredis/phpredis#pconnect-popen  

命令参考:http://doc.redisfans.com  redis 

 

redis 操作异常总结

1.获取的key存在,使用了错误的方法,如:string 用hashes的方法,返回false。

2.获取不存在的key false。

3.设置不存在的key,写入值,返回1,如果存在替换,返回0。使用hSetNx类型的函数,存在返回false不设置值,反之true设置值。

redis 批量测试

// 批量
$redis = new \Redis();
$redis->pconnect(‘127.0.0.1‘);
$redis->auth(‘111111‘);
$ts = microtime(true);
var_dump($ts);
$redis->multi();
for ($i=0; $i < 1000; $i++) {
$redis->set(‘key1‘, ‘val1‘);
$redis->get(‘key1‘);
$redis->del(‘key1‘);
}
$redis->exec();
$df = microtime(true) - $ts;
var_dump($df);
// var_dump($ret);
// die;
// 单个
$redis = new \Think\Cache\Driver\Redis();
$ts = microtime(true);
var_dump($ts);
for ($i=0; $i < 1000; $i++) {
$redis->set(‘key1‘, ‘val1‘);
$redis->get(‘key1‘);
$redis->del(‘key1‘);
}
$df = microtime(true) - $ts;
var_dump($df);
die;

结果 批量: float(1.11732006073) 单个: float(1.2670619487762) 可以在phpredis扩展使用中看出批量和单个并没有太大时间上的

差别和http://my.oschina.net/u/2273085/blog/419920,此网友结论相差很大,也许是PHP自身的问题,不得而知。

redis 操作常规返回情况

// redis 获取key类型错误返回false
$keyString = ‘13999999999‘;
$keyHash = ‘ThumbnailServerList‘;
$redisCache = new \Think\Cache\Driver\Redis();
$return = $redisCache->hGetAll($keyString, $value);
var_dump($return);
$return = $redisCache->hGetAll($keyHash, $value);
var_dump($return);
$return = $redisCache->get($keyString, $value);
var_dump($return);
$return = $redisCache->get($keyHash, $value);
var_dump($return);
die;

结果:bool(false) bool(false) string(43) "9c8d83f5890611e45538a744eb1b036b156790b7533" bool(false) 获取类型错误返回false,不存在也是false。

 

以上是关于PHP redis 批量操作的主要内容,如果未能解决你的问题,请参考以下文章

redis使用管道pipeline提升批量操作性能(php演示)

sh [LUA] Redis批量/批量操作脚本(重命名,删除)

Redis集群批量操作

Redis批量操作详解及性能分析

python redis 批量设置过期key

Spring boot集成Redis—进行增加,更新,查询,批量删除等操作