php中memcached怎么存多维数组
我想问下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中memcached怎么存多维数组?
比如我想缓存多个用户发的帖子标题,数组形式是这样的:
php$user1=array( array('title'=>'帖子1','time'=>'2015-07-08'), array('title'=>'帖子2','time'=>'2015-07-09'), );
假设user1的UID是1001,我想通过UID得到他所发的帖子缓存,不知道怎么弄。
另外Redis里面也能用吗?
求大虾指点,感激不尽。
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() )
这样可否
key:prefix + userId value:[{"title":"\u5e16\u5b501","time":"2015-07-08"},{"title":"\u5e16\u5b502","time":"2015-07-09"}]
memcache只支持基本的数据存储,如字符串,不支持复杂结构如map等
所以结构化的数据,可以串行化后作为值存储。
串行化的方法有很多,比如json_encode();
数组不用转成字符串,直接存数组就行了
我是使用 json_encode 配合 urlencode 来序列化结果集,之后再保存在memcache中
memcache的话,建议序列化或者json_encode成string之后进行存储。redis有更丰富的数据类型,也可以考虑,hashset。
转成json字符串扔进去
你可以直接存数据进去都是可以的,Mecached扩展底层会帮你处理的。
多个用户是多少? 如果是可知的 推荐还是用json_encode()后,存入到memcache中,按三维数组的结构,并不推荐serialize
看看官方示例吧,不需要自己把数组进行序列化:
addServer('localhost', 11211); $m->set('int', 99); $m->set('string', 'a simple string'); $m->set('array', array(11, 12)); /* 'object'这个key将在5分钟后过期 */ $m->set('object', new stdclass, time() + 300); var_dump($m->get('int')); var_dump($m->get('string')); var_dump($m->get('array')); var_dump($m->get('object')); ?>
memcached可以存字符串,数组,对象,整形多种类型,自动序列化。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP에서 데이터베이스 작업은 매우 쉽습니다. 이번 장에서는 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 이해하겠습니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

CakePHP에 로그인하는 것은 매우 쉬운 작업입니다. 한 가지 기능만 사용하면 됩니다. cronjob과 같은 백그라운드 프로세스에 대해 오류, 예외, 사용자 활동, 사용자가 취한 조치를 기록할 수 있습니다. CakePHP에 데이터를 기록하는 것은 쉽습니다. log() 함수는 다음과 같습니다.
