<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ``` 第一部分:我們可以封裝一個自己的Redis類 (這部分)轉自:https://www.cnblogs.com/xiaozong/p/5666294.html <?php class MyRedis{ private static $handler; private static function handler(){ if(!self::$handler){ self::$handler = new Redis(); self::$handler -> connect('127.0.0.1','6379'); } return self::$handler; } public static function get($key){ $value = self::handler() -> get($key); $value_serl = @unserialize($value); if(is_object($value_serl)||is_array($value_serl)){ return $value_serl; } return $value; } public static function set($key,$value){ if(is_object($value)||is_array($value)){ $value = serialize($value); } return self::handler() -> set($key,$value); } } 調用測試 <?php require_once 'MyRedis.php'; class MyObj{ public function rTime(){ return time(); } } $arr = array(1,2,3); $obj = new MyObj(); $str = ' My name is Jeffrey.'; MyRedis::set('arr',$arr); MyRedis::set('obj',$obj); MyRedis::set('str',$str); $_arr = MyRedis::get('arr'); $_obj = MyRedis::get('obj'); $_str = MyRedis::get('str'); var_dump($_arr); var_dump($_obj->rTime()); var_dump($_str); 第二部分:數據序列化存儲除了上面使用的Serialize(),還有不同的方式,這里對 JSON, Serialize, Msgpack, Hprose 四種方式進行對比 轉自: http://blog.csdn.net/zhouzme/article/details/46863709 1. 對序列化后的字符串長度對比: 測試代碼: $arr = [0, 1, 2, 'a', 'b', 'c', 'd', 'a'=>'12', '包含中文', 'abcd包含中文efg'=>'abc一二三四defg', '鍵名'=>['abc'=>['def'=>123, 456, 'abcd中文內容efg'], 'a之間c'=>['a'=>123, 'c', 5=>6]]]; $str = hprose_serialize($arr); echo 'Hprose: '; echo '<br>'; echo '長度: '. strlen($str); echo '<br>'; echo '內容:'. $str; echo '<hr>'; $str = msgpack_pack($arr); echo 'Msgpack: '; echo '<br>'; echo '長度: '. strlen($str); echo '<br>'; echo '內容:'. $str; echo '<hr>'; $str = json_encode($arr); echo 'JSON: '; echo '<br>'; echo '長度: '. strlen($str); echo '<br>'; echo '內容:'. $str; echo '<hr>'; $str = serialize($arr); echo 'Serialize: '; echo '<br>'; echo '長度: '. strlen($str); echo '<br>'; echo '內容:'. $str; echo '<hr>'; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 結果: Hprose: 長度: 196 內容:m11{0011223ua4ub5uc6uds1”a”s2”12”7s4”包含中文”s11”abcd包含中文efg”s11”abc一二三四defg”s2”鍵名”m2{s3”abc”m3{s3”def”i123;0i456;1s11”abcd中文內容efg”}s4”a之間c”m3{r1;i123;0uc56}}} Msgpack: 長度: 139 內容:??a?b?c?d?a?12?包含中文?abcd包含中文efg?abc一二三四defg?鍵名??abc??def{???abcd中文內容efg?a之間c??a{?c JSON: 長度: 281 內容: {“0”:0,”1”:1,”2”:2,”3”:”a”,”4”:”b”,”5”:”c”,”6”:”d”,”a”:”12”,”7”:”\u5305\u542b\u4e2d\u6587”,”abcd\u5305\u542b\u4e2d\u6587efg”:”abc\u4e00\u4e8c\u4e09\u56dbdefg”,”\u952e\u540d”:{“abc”:{“def”:123,”0”:456,”1”:”abcd\u4e2d\u6587\u5185\u5bb9efg”},”a\u4e4b\u95f4c”:{“a”:123,”0”:”c”,”5”:6}}} Serialize: 長度: 321 內容:a:11:{i:0;i:0;i:1;i:1;i:2;i:2;i:3;s:1:”a”;i:4;s:1:”b”;i:5;s:1:”c”;i:6;s:1:”d”;s:1:”a”;s:2:”12”;i:7;s:12:”包含中文”;s:19:”abcd包含中文efg”;s:19:”abc一二三四defg”;s:6:”鍵名”;a:2:{s:3:”abc”;a:3:{s:3:”def”;i:123;i:0;i:456;i:1;s:19:”abcd中文內容efg”;}s:8:”a之間c”;a:3:{s:1:”a”;i:123;i:0;s:1:”c”;i:5;i:6;}}} 對比結論: 一般情況下,Msgpack < JSON < Serialize 。差距一般在 1~3倍左右,Msgpack 體積非常小 2. 序列化速度對比: 測試代碼: echo 'Begin ~~<br><hr><br>'; $begin = microtime(true); $bm = memory_get_usage(); for ($i = 0; $i <= 100000; $i++) { // $str = hprose_serialize($arr); // $str = msgpack_pack($arr); // $str = serialize($arr); $str = json_encode($arr); } $em = memory_get_usage(); echo 'End !<br><hr><br>Use Time :'; echo microtime(true) - $begin; echo '<br><hr><br>Use Mem:'; echo ceil(($em - $bm)/1024/1024) .'MB'; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 測試結果: Hprose 耗時: 0.435 ~ 0.466 Msgpack 耗時: 0.328 ~ 0.378 Serialize 耗時: 0.496 ~ 0.541 JSON 耗時: 0.431 ~ 0.469 3. 反序列化速度對比 測試代碼: echo 'Begin ~~<br><hr><br>'; $begin = microtime(true); $bm = memory_get_usage(); //$str = hprose_serialize($arr); //$str = msgpack_pack($arr); //$str = serialize($arr); $str = json_encode($arr); for ($i = 0; $i <= 100000; $i++) { // hprose_unserialize($str); // msgpack_unpack($str); // unserialize($str); json_decode($str); } $em = memory_get_usage(); echo 'End !<br><hr><br>Use Time :'; echo microtime(true) - $begin; echo '<br><hr><br>Use Mem:'; echo ceil(($em - $bm)/1024/1024) .'MB'; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 測試結果: Hprose 耗時: 0.553 ~ 0.591 Msgpack 耗時: 0.492 ~ 0.550 Serialize 耗時: 0.496 ~ 0.531 JSON 耗時: 0.852 ~ 0.893 4. Redis 測試: 每次測試清空后添加 兩百萬 條進隊列,查看 Reids info 中 Memory 信息: a. 初始化空數據時: 這里寫圖片描述 b. 使用 Msgpack 序列化后錄入 Msgpack 序列化內存占用 c. 使用 JSON 編碼后錄入 JSON 序列化內存占用 d. 使用 Serialize 序列化后錄入 Serialize 序列化內存占用 對比結果: Msgpack 占用內存 385M JSON 占用內存 660M Serialize 占用內存 752M Hprose 我沒測試,體積應該在 Msgpack 和 JSON 之間 總結: 速度: Msgpack 速度最快,其次 Serialize, JSON 反序列化速度慢了近一倍 體積: Msgpack 最小,其次 JSON,Serialize 體積最大,一般比 Msgpack 大 1~3 倍。 推薦使用 Msgpack 進行序列化 感覺從各方面來看 Msgpack 都是非常牛逼的,只不過需要自己單獨安裝 Msgpack 的擴展,不過安裝也很簡單的。 服務器上可以直接 pecl install msgpack 如果不行的話,就手動下載 tgz 包: 在這里下載最新版本 https://pecl.php.net/package/msgpack 然后 pecl install msgpack-0.5.6.tgz 即可 之前用 Hprose 時據說他的 PHP Pecl 擴展 hprose_serialize 比 Msgpack 還要快,但今天測試發現比 Msgpack 還要慢一點點,體積也要大一些,不過相對于 PHP 的 serialize 來還是要好一些吧。 測試平臺說明: windows7 x64 I7 4核8線程 內存16G PHP5.5.19 Redis 2.8.21 --------------------- ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看