资源描述:
《Redis与网站架构》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、Redis与网站架构@joyqiSegmentFault.com12年7月30日星期一什么是Redis?12年7月30日星期一什么是Redis?•REmoteDIctionaryServer缩写•一个基于内存的网络存储系统•丰富的数据结构(sets,sortedsets,hashes,list...)•本质是key-value,但是与memcached不同的是,value的类型得到了扩展12年7月30日星期一有何不同?看看具体的网站12年7月30日星期一一个普通的问题列表需求•问题本身的数据(标题,投票等等)•问题的作者数据(另一张单独的一张数据表,通过某个键值
2、关联)•问题的标签(本身单独一张数据表,通过一个中间关系表与问题产生一对多的关系)12年7月30日星期一如何取出数据?SELECT...SQL无法回避的问题12年7月30日星期一用一条SQL解决问题是不可能的12年7月30日星期一多次查询会让大家崩溃12年7月30日星期一冗余字段会让你看起来很傻12年7月30日星期一我看还是用Memcached好了等等,为啥不试试Redis12年7月30日星期一用Hashes保存字段$user=array('id'=>123,'name'=>'joyqi','mail'=>'magike.net@gmail.com','crea
3、ted'=>1212312312);$redis->hMSet(‘user:123’,$user);print_r($redis->hGetAll(‘user:123’));12年7月30日星期一用Sets保存关系$questionId=123;$tagIds=array(111,222,333);foreach($tagIdsas$sort=>$tagId){$redis->zAdd(‘question_tag:’.$questionId,$sort,$tagId);}print_r($redis->zRange(‘question_tag:123’,0,-1
4、));12年7月30日星期一与SQL相比•大大减少了查询数量,提高了效率•redis的API更加人性化,再也不需要构建SQL语句,节省了SQL的解析时间12年7月30日星期一与Memcached相比•支持哈希存储,存储多个字段时不需要自己再次用类似json的格式编码和解码,更新也更加高效•支持列表和集合等多种数据集,可以方便快捷地处理有序数据12年7月30日星期一Redis用于搜索?12年7月30日星期一有了Redis,支持实时搜索的门槛被大大降低12年7月30日星期一分词加Redis集合实现索引$questionTitle=‘搜索技术’;$questionId
5、=123;$words=fenci($questionTitle);//array(‘搜索’,‘技术’);foreach($wordsas$word){$redis->zAdd(‘w:’.md5($word),1,$questionId);}//索引完成12年7月30日星期一Redis集合Union操作实现查询$keywords=‘怎样实现搜索技术’;$words=fenci($keywords);//array(‘怎样’,‘实现’,‘搜索’,‘技术’);$indexes=array_map(function($word){return‘w:’.md5($wor
6、d);},$words);$redis->zUnion(‘result’,$indexes,array_fill(0,count($indexes),1),‘sum’);print_r($redis->zRevRange(‘result’,0,-1));12年7月30日星期一深远影响Redis的特性是如此丰富而又恰到好处,他会给网站架构带来深远影响,一些以前无法实现的方法将涌现出来。http://redis.io12年7月30日星期一:)Thanks,Q&A@joyqi
7、joyqi.com12年7月30日星期一