你能在Memcache中存储一个数组吗?
我想存储;
用户ID号
用户的照片网址
用户名
作为一个阵列,有人告诉我你可以,然后有人告诉我你不能这是什么?
是.
Memcache::set('someKey', array( 'user_id' => 1, 'url' => 'http://', 'name' => 'Dave' ));
有关非常详细的示例,请参阅文档.
memcache中项目的最大存储大小为1,048,576字节(1MB),序列化数组确实需要一些空间.
如果你要将数组结构如下:
array( [0] => 1, [1] => 2, [2] => 3 )
key是自动生成的,value是用户id.
使用此结构编号为1-5000的5000个用户的序列化数组的字符串长度为67792个字符,50000个用户生成777794个字符的数组.
编号100000到150000生成一个838917个字符的序列化字符串.
因此,对于50k用户(如上一个问题所述),您可能会低于1MB的限制.如果您有本地缓存(APC等),请使用它,或者如果由于任何原因不一次需要所有ID,我强烈建议拆分结果或仅使用数据库.
还要考虑一下存储在memcached中的数据结构.如果您只是使用缓存来提供要查找的主键列表,那么您是否需要其他数据?