注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

记录~~~

Stay Hungry. Stay Foolish.

 
 
 

日志

 
 

Redis与网站架构 @joyqi  

2013-12-18 17:48:23|  分类: 架构/性能 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
什么是Redis?
? REmote DIctionary Server 缩写
? 一个基于内存的网络存储系统
? 丰富的数据结构(sets, sorted sets,hashes, list ...)
? 本质是key-value,但是与memcached不同的是,value的类型得到了扩展

用Hashes保存字段
$user = array(
'id' => 123,
'name' => 'joyqi',
'mail' => 'magike.net@gmail.com',
'created' => 1212312312
);
$redis->hMSet(‘user:123’, $user);
print_r($redis->hGetAll(‘user:123’));
[root@localhost redis]# php db1.php     
Array
(
    [id] => 123
    [name] => goith
    [age] => 12
)

用Sets保存关系

<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);


$questionid = 123;
$tagids = array(11,22,33);
foreach( $tagids as $sort=>$tagid){

$redis->zAdd('question_tag:'.$questionid,$sort,$tagid);
}
$val = $redis->zRange('question_tag:123',0,-1);
print_r($val);
print_r("\n");

[root@localhost redis]# php db2.php
Array
(
[0] => 11
[1] => 22
[2] => 33
)


有了Redis,支持实时搜
索的门槛被大大降低

分词加Redis集合实现索引

$questionTitle = ‘搜索技术’;
$questionId = 123;
$words = fenci($questionTitle); // array(‘搜索’, ‘技术’);
foreach ($words as $word) {
$redis->zAdd(‘w:’ . md5($word), 1, $questionId);
}
// 索引完成

Redis集合Union操作实现查询

$keywords = ‘怎样实现搜索技术’;
$words = fenci($keywords); // array(‘怎样’, ‘实现’, ‘搜索’, ‘技术’);
$indexes = array_map(function ($word) {
return ‘w:’ . md5($word);
}, $words);
$redis->zUnion(‘result’, $indexes, array_fill(0, count($indexes), 1),
‘sum’);
print_r($redis->zRevRange(‘result’, 0, -1));


  评论这张
 
阅读(279)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017