我想问下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可以存字符串,数组,对象,整形多种类型,自动序列化。

ThesecrettokeepingaPHP-poweredwebsiterunningsmoothlyunderheavyloadinvolvesseveralkeystrategies:1)ImplementopcodecachingwithOPcachetoreducescriptexecutiontime,2)UsedatabasequerycachingwithRedistolessendatabaseload,3)LeverageCDNslikeCloudflareforservin

You should care about DependencyInjection(DI) because it makes your code clearer and easier to maintain. 1) DI makes it more modular by decoupling classes, 2) improves the convenience of testing and code flexibility, 3) Use DI containers to manage complex dependencies, but pay attention to performance impact and circular dependencies, 4) The best practice is to rely on abstract interfaces to achieve loose coupling.

Yes,optimizingaPHPapplicationispossibleandessential.1)ImplementcachingusingAPCutoreducedatabaseload.2)Optimizedatabaseswithindexing,efficientqueries,andconnectionpooling.3)Enhancecodewithbuilt-infunctions,avoidingglobalvariables,andusingopcodecaching

ThekeystrategiestosignificantlyboostPHPapplicationperformanceare:1)UseopcodecachinglikeOPcachetoreduceexecutiontime,2)Optimizedatabaseinteractionswithpreparedstatementsandproperindexing,3)ConfigurewebserverslikeNginxwithPHP-FPMforbetterperformance,4)

APHPDependencyInjectionContainerisatoolthatmanagesclassdependencies,enhancingcodemodularity,testability,andmaintainability.Itactsasacentralhubforcreatingandinjectingdependencies,thusreducingtightcouplingandeasingunittesting.

Select DependencyInjection (DI) for large applications, ServiceLocator is suitable for small projects or prototypes. 1) DI improves the testability and modularity of the code through constructor injection. 2) ServiceLocator obtains services through center registration, which is convenient but may lead to an increase in code coupling.

PHPapplicationscanbeoptimizedforspeedandefficiencyby:1)enablingopcacheinphp.ini,2)usingpreparedstatementswithPDOfordatabasequeries,3)replacingloopswitharray_filterandarray_mapfordataprocessing,4)configuringNginxasareverseproxy,5)implementingcachingwi

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

Notepad++7.3.1
Easy-to-use and free code editor

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function
