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

Jas*_*vis 18 php memcached

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

我想存储;

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

作为一个阵列,有人告诉我你可以,然后有人告诉我你不能这是什么?

hob*_*ave 23

是.

Memcache::set('someKey', array(
    'user_id' => 1,
    'url' => 'http://',
    'name' => 'Dave'
));
Run Code Online (Sandbox Code Playgroud)

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

  • 你有记录在memcache中存储5K记录的原因吗?我想你可能会忽略缓存的重点. (4认同)

Jas*_*son 8

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

如果你要将数组结构如下:

array(
    [0] => 1,
    [1] => 2,
    [2] => 3
)
Run Code Online (Sandbox Code Playgroud)

key是自动生成的,value是用户id.

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

编号100000到150000生成一个838917个字符的序列化字符串.

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

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