Memcached中Perl序列化儲存的對象PHP無法讀取的解決

來源:互聯網
上載者:User

Perl Memcached的用戶端序列化對象採用的是Storable模組的nfreeze方法,而這個方法又調用了c擴充的do_store方法;還原序列化使用的是Storable模組的thaw方法,而這個方法又是調用的c擴充的do_retrieve方法。

而在PHP中,進行的卻是serialize和unserialize操作。造成了無法正常讀取的結果。

Perl儲存一個('a', 'c')數組的引用,

命令列擷取的結果如下:

用二進位編輯器查看儲存的結果如下:

在PHP中memcache用戶端gzuncompress和unserialize函數處理前可以得到儲存的資料,列印出來如所示:

和上面二進位編輯器查看的結果是一致的。

 

memcached的官方文檔:http://code.google.com/p/memcached/wiki/FAQ

裡也提到

由此可以看到,在不同語言的用戶端訪問memcached,由於對象序列化演算法不一致,造成無法直接的進行讀取和解析。

比較好的辦法是通過通用的格式例如JSON、YAML進行儲存和讀取,或者調用服務,或者採用Thrift、Gearman這樣的跨語言平台來解決。

但是對於已有的資料,有沒有可以直接存取的辦法呢?

 

Perl可以可以安裝PHP serialize and unserialize in Perl模組實現和php一樣的序列化,具體解決辦法參加驚峰的部落格:http://www.jeftom.com/?p=212#respond。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.