2012-02-18 44 views
0

我想通過C中的libmemcached將整個MYSQL結果存儲在memcached中。這是可能的還是必須將每個行元素分別存儲在memcached中?libmemcached存儲mysql結果

+0

我只是想要注意的是,我沒有使用序列化庫,而是創建了自己的抽象層,以便程序的其餘部分使用它而不是使用memcache/sql特定的數據結構。這並不是最簡單的方式,但它很適合我的項目。 – 2012-02-27 05:20:52

回答

1

如果結果集總是小於1mb,那麼可以保存整個結果集。否則(如果你的結果可能大於1mb),你必須找到另一個解決方案。如果將每行存儲在memcache中,那麼這可能是一個很好的解決方案。

值大小的1mb限制是編入memcache的硬限制。唯一的解決方法是更改​​源代碼中的限制並重新編譯內存緩存。

查看http://groups.google.com/group/memcached/browse_thread/thread/d32434ce77131e48的一些討論。 (注意:這一切都假設可以將結果序列化成一個字符串;如果你不能這樣做,那麼你也不能存儲單獨的行,因爲數組不是一個限制因素序列化能力。)

這裏有一個帖子討論如何Serialize Data Structures in C

+0

我不確定使用什麼函數來存儲整個結果集,因爲它似乎庫中的集合函數僅將char *作爲輸入。 – 2012-02-18 00:27:42

+0

@SlavaMarkeyev,是的。如果結果集可串行化爲字符串,則只能存儲結果集。您如何決定序列化它是特定於應用程序的。 – 2012-02-18 00:28:37

+0

@SlavaMarkeyev,我在我的答案中添加了關於序列化的註釋。無論如何,如果你的單行可以被序列化,那麼你的整個結果集肯定有可能被序列化。 – 2012-02-18 00:29:37

0

當然,你可以做到這一點。你必須找到一種方法來將所有的答案打包在一起。無論如何,它不容易找到我爲什麼要這樣做。