你能在Memcache中存储PHP数组吗?

2022-08-30 20:59:48

你能在Memcache中存储一个数组吗?

我想存储;

  1. 用户 ID 号
  2. 用户的照片网址
  3. 用户名

作为一个数组,有人告诉我你可以,然后有人告诉我你不能,这是哪一个?


答案 1

是的。

Memcache::set('someKey', array(
    'user_id' => 1,
    'url' => 'http://',
    'name' => 'Dave'
));

有关非常详细的示例,请参阅文档


答案 2

memcache 中项目的最大存储大小为 1,048,576 字节 (1MB),序列化数组确实会占用一些空间。

如果你要简单地构建你的数组,

array(
    [0] => 1,
    [1] => 2,
    [2] => 3
)

键是自动生成的,值是用户 ID。

使用此结构的编号为 1-5000 的 5000 个用户的序列化数组的字符串长度为 67792 个字符,50000 个用户生成777794个字符的数组。

编号为 100000 到 150000 将生成一个包含838917个字符的序列化字符串。

因此,在50k用户(如上一个问题中所述),您可能会低于1MB的限制。如果你有一个本地缓存(APC等),请改用它,或者如果出于任何原因不需要一次所有的ID,我强烈建议拆分结果或简单地使用数据库。

还要考虑您存储在 memcached 中的数据结构。如果您使用缓存只是为了为您提供要查找的主键列表,那么是否需要其他数据?


推荐