【问题标题】:libmemcached store mysql resultlibmemcached 存储 mysql 结果
【发布时间】:2012-02-18 00:19:39
【问题描述】:

我想通过 C 中的 libmemcached 将整个 MYSQL 结果存储在 memcached 中。这可能吗,还是我必须将每个行元素单独存储在 memcached 中?

【问题讨论】:

  • 我只想注意,我没有使用序列化库,而是创建了自己的抽象层,以便程序的其余部分使用它而不是 memcache / sql 特定的数据结构。这并不是最简单的方法,但它很适合我的项目。

标签: mysql c memcached libmemcached


【解决方案1】:

如果您的结果集始终小于 1mb,则可以保存整个结果集。否则(如果您的结果可能大于 1mb),您将不得不寻找另一个解决方案。如果将每一行存储在 memcache 中适合您,那么这可能是一个很好的解决方案。

值大小的 1mb 限制是编码到内存缓存中的硬限制。唯一的解决方法是更改​​源代码中的限制并重新编译 memcache。

请参阅http://groups.google.com/group/memcached/browse_thread/thread/d32434ce77131e48 进行讨论。

(注意:这都是假设可以将结果序列化为字符串;如果你不能这样做,那么你也不能存储单独的行,因为数组不是限制因素关于序列化能力。)

这是一篇讨论如何Serialize Data Structures in C的帖子

【讨论】:

  • 我不确定使用什么函数来存储整个结果集,因为库中的集合函数似乎只接受 char* 作为输入。
  • @SlavaMarkeyev,是的。如果结果集可序列化为字符串,则只能存储结果集。您决定如何序列化它是特定于应用程序的。
  • @SlavaMarkeyev,我在答案中添加了关于序列化的注释。无论如何,如果您的单个行可以被序列化,那么您的整个结果集肯定可以被序列化。
  • @SlavaMarkeyev,但据我所知,如果您拥有的结果集来自 MySQL,那么它肯定 可序列化的。
  • @SlavaMarkeyev,我在对可能对您有所帮助的帖子的回答中添加了一个链接;这是关于 C 中的序列化库
【解决方案2】:

绝对可以。您必须找到一种方法将所有响应打包在一起。无论如何,我并不容易想到你为什么要这样做。

【讨论】:

    猜你喜欢
    • 2012-06-22
    • 2013-08-05
    • 1970-01-01
    • 2016-04-03
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    相关资源
    最近更新 更多