分析redis 数据脚本(备忘)
来源:互联网 发布:win10网络图标没了 编辑:程序博客网 时间:2024/05/19 19:59
<?php$config = [ 'host' => 'xxx', 'port' => 'xxx', 'pass' => 'xxx'];$redis = new Redis();for ($i = 0; $i < 10; $i++) { $result = $redis->connect($config['host'], $config['port'], 0.3); if ($result) { break; }}if (!$result) { die('Can not connect redis.');}if ($config['pass']) { $redis->auth($config['pass']);}$redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY);while ($keys = $redis->scan($it, $match = '*', $count = 1000)) { $redis->MULTI(Redis::PIPELINE); foreach ($keys as $key) { $redis->type($key); } $data = $redis->exec(); $t = []; $redis->MULTI(Redis::PIPELINE); foreach($keys as $i => $key) { switch ($data[$i]) { case Redis::REDIS_STRING: $redis->debug($key); break; case Redis::REDIS_SET: $redis->SCARD($key); break; case Redis::REDIS_LIST: $redis->llen($key); break; case Redis::REDIS_ZSET: $redis->ZCARD($key); break; case Redis::REDIS_HASH: $redis->hlen($key); break; default: break; } //echo $key."\t".$data[$i]."\n"; } $info = $redis->exec(); $redis->MULTI(Redis::PIPELINE); foreach ($keys as $i => $key) { $size = 0; $fieldCount = 0; $type = ''; $it_t = null; switch ($data[$i]) { case Redis::REDIS_STRING: $size = $info[$i]['serializedlength']; $s = $redis->debug($key); $fieldCount = 1; $type = "string"; break; case Redis::REDIS_SET: $fieldCount = $info[$i]; if($fieldCount > 10000) { //$redis->SSCAN($key, $it_t, '*', 1000); $redis->get('a'); }else{ $redis->debug($key); } $type = "set"; break; case Redis::REDIS_LIST: $fieldCount = $info[$i]; if($fieldCount > 10000) { //$redis->SSCAN($key, $it_t, '*', 1000); $redis->get('a'); }else{ $redis->debug($key); } $type = "list"; break; case Redis::REDIS_ZSET: $fieldCount = $info[$i]; if($fieldCount > 10000) { //$redis->ZSCAN($key, $it_t, '*', 1000); $redis->get('a'); }else{ $redis->debug($key); } $type = "zset"; break; case Redis::REDIS_HASH: $fieldCount = $info[$i]; if($fieldCount > 10000) { //$redis->HSCAN($key, $it_t, '*', 1000); $redis->get('a'); }else{ $redis->debug($key); } $type = "hash"; break; default: break; } } $sizeData = $redis->exec(); //$redis->MULTI(Redis::PIPELINE); foreach ($keys as $i => $key) { $size = 0; $fieldCount = 0; $type = ''; $it_t = null; switch ($data[$i]) { case Redis::REDIS_STRING: $size = $info[$i]['serializedlength']; //$s = $redis->debug($key); $fieldCount = 1; $type = "string"; break; case Redis::REDIS_SET: $fieldCount = $info[$i]; if($fieldCount > 10000) { $t = $redis->SSCAN($key, $it_t, '*', 1000); //$t = $sizeData[$i]; $size = intval(strlen(implode('', $t)) / count($t)) * $fieldCount; }else{ //$s = $redis->debug($key); $s = $sizeData[$i]; $size = $s['serializedlength']; } $type = "set"; break; case Redis::REDIS_LIST: $fieldCount = $info[$i]; //$redis->debug($key); if ($fieldCount > 10000) { $t = $redis->LRANGE($key, 0, 1000-1); $size = intval(strlen(implode('', $t)) / count($t)) * $fieldCount; } else { $s = $sizeData[$i]; $size = $s['serializedlength']; } $type = "list"; break; case Redis::REDIS_ZSET: $fieldCount = $info[$i]; if($fieldCount > 10000) { $t = $redis->ZSCAN($key, $it_t, '*', 1000); //$t = $sizeData[$i]; $size = intval(strlen(implode('', $t)) / count($t)) * $fieldCount; }else{ //$s = $redis->debug($key); $s = $sizeData[$i]; $size = $s['serializedlength']; } $type = "zset"; break; case Redis::REDIS_HASH: $fieldCount = $info[$i]; if($fieldCount > 10000) { $t = $redis->HSCAN($key, $it_t, '*', 1000); foreach ($t as $_key => $r) { $t[$_key] = $r.$_key; //echo $t[$_key];exit; } //$t = $sizeData[$i]; $size = intval(strlen(implode('', $t)) / count($t)) * $fieldCount; }else{ //$s = $redis->debug($key); $s = $sizeData[$i]; $size = $s['serializedlength']; } $type = "hash"; break; default: break; } echo $key."\t".$type."\t".$fieldCount."\t".$size."\n"; } //exit; //var_dump($loop++, $result);}//var_dump($result);
0 0
- 分析redis 数据脚本(备忘)
- lds 脚本分析备忘
- shell脚本基础(备忘)
- redis备忘
- Redis备忘
- Redis 2.6 Lua脚本功能实现分析
- redis源代码查看笔记(备忘)
- Redis 数据同步机制分析
- Redis 数据同步机制分析
- redis清除全部数据vbs脚本
- 简单脚本:把MYSQL数据导入REDIS
- python数据统计脚本实例mysql,redis
- unity3D 功能脚本备忘【1】(方法)
- unity3D 功能脚本备忘【1】(方法)
- unity3D 功能脚本备忘【2】(属性)
- spark--python数据分析脚本
- 【备忘】京东大数据分析与创新应用分析课程
- Kaldi脚本分析(1)——数据准备
- http响应状态码大全
- Eclipse插件篇 - OpenExplorer
- BestCoders
- 浅谈CSRF攻击方式
- sql server 错误9003:LSN无效(日志扫描号无效),对数据库的修复
- 分析redis 数据脚本(备忘)
- mysql 在linux上的集群安装方法(数据节点和存储节点分开)
- 为什么HikariCP被号称为性能最好的Java数据库连接池,如何配置使用
- POJ-1050
- hadoop 生成可直接运行的jar包
- POI CSV方式处理大数据excel文件
- Spring框架中获得DataSource对象的方法(转)
- OC 中NULL nil和NSNULL的区别
- linux C++ 多线程编程