php中memcached怎么存多维数组
PHP中文网
PHP中文网 2017-04-10 16:08:20
[PHP讨论组]

我想问下php中memcached怎么存多维数组?
比如我想缓存多个用户发的帖子标题,数组形式是这样的:

php$user1=array(
    array('title'=>'帖子1','time'=>'2015-07-08'),
    array('title'=>'帖子2','time'=>'2015-07-09'),
);

假设user1的UID是1001,我想通过UID得到他所发的帖子缓存,不知道怎么弄。
另外Redis里面也能用吗?
求大虾指点,感激不尽。

PHP中文网
PHP中文网

认证0级讲师

全部回复(11)
PHP中文网

PHP的Memcached的驱动会自动进行serialize和unserialize,你所需要做的是:
1. 选取一个合适key,比如 "POST_OF_USER_" . $userId
2. 调用set函数把数据丢进去就行了

示例代码:

// 0. 准备:
$cache = new Memcache();
$cache->connect('127.0.0.1', 11211); // 请替换为你的memcache服务器地址和端口
$userId = // 你自己想办法获取...

// 1. 构造cache KEY
$cacheKey = "POSTS_OF_USER_" . $userId;

// 2. 从缓存中获取数据
$posts = $cache->get($cacheKey);
if ($posts === false){ 
    // 3. 缓存失效了,加载数据
    $posts = // 你自己想办法加载数据

    // 4. 保存数据到缓存中
    $cache->set($cacheKey, $posts);    
}

// OK,可以使用posts了

阿神

1.memcache或者redis键值只能是字符串或者整型数组,所以数组必须串行化
2.serialize,json_encode皆可以串行化
3.PHP建议用serialize

    $array  = array();
    $string = serialize($array);
    $memcache->set('key',$string);
    $result = $memcache->get('key');
    $result = unserialize($result); 
大家讲道理
array('user1Id'=>array(
                        array('title'=>'帖子1','time'=>'2015-07-08'),
                        array('title'=>'帖子2','time'=>'2015-07-09')
                       ),
       'user2Id'=>array()
      )

这样可否

ringa_lee

key:prefix + userId
value:[{"title":"\u5e16\u5b501","time":"2015-07-08"},{"title":"\u5e16\u5b502","time":"2015-07-09"}]

memcache只支持基本的数据存储,如字符串,不支持复杂结构如map等
所以结构化的数据,可以串行化后作为值存储。
串行化的方法有很多,比如json_encode();

PHP中文网

数组不用转成字符串,直接存数组就行了

PHPz

我是使用 json_encode 配合 urlencode 来序列化结果集,之后再保存在memcache中

PHPz

memcache的话,建议序列化或者json_encode成string之后进行存储。redis有更丰富的数据类型,也可以考虑,hashset。

高洛峰

转成json字符串扔进去

PHPz

你可以直接存数据进去都是可以的,Mecached扩展底层会帮你处理的。

ringa_lee

多个用户是多少? 如果是可知的 推荐还是用json_encode()后,存入到memcache中,按三维数组的结构,并不推荐serialize

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号