标签:Redis

redis 2.04 稳定版发布,附linux安装、启动方法

http://code.google.com/p/redis/downloads/detail?name=redis-2.0.4.tar.gz

安装及启动方法非常的简单,目前非常稳定,性能强大挺适合部署在生产环境中使用

准备部署到joyjin网

安装方法

tar xvzf redis-2.0.4.tar.gz
cd  redis-2.0.4
make
mkdir /home/redis
cp redis-server  /home/redis
cp redis-benchmark  /home/redis
cp redis-cli  /home/redis
cp redis.conf  /home/redis
cd  /home/redis

启动

./redis-server redis.conf

进入命令交互模式

两种

1:   ./redis-cli

2:   telnet 127.0.0.1 6379       (ip接端口)


redis做带分页的列表缓存

最近的工作是优化网站的列表缓存

采用的是redis+memcache结构

redis只存文章ID号及逻辑关系 memcache存单篇文章的信息、内容及点击数

redis和memcache采用的都是主动缓存模式,在通常情况下,缓存时间不设时限,并且不主动读取mysql数据库,所有的数据从缓存中读取

列表缓存需求:不同分类及所有分类的文章列表,带分页功能

redis使用lists存储不同的分类列表

例: news_list_1:           表示存放文章cid为1的列表的key,值为id号

new_list_1:2:3:4:5      表示存放文章cid为1,2,3,4,5的全部文章列表的key

压数据:从mysql中按排序要求把这些文章的ID号摄取出来,从底部开始压入按cid命名的lists中

添加新篇文章后,把新的文章id压入最上面,然后从mysql中,按顺序读取这个ID上面有多少篇文章,决定交换多少次的次数n

然后把新的文章ID(因为压在最上页,index为0)与下面的index 一个一个交换值 ,一共交换上面从mysql得到的次数n

修改排序方法同新加。先删除,然后把ID压到最上面,最后把这个ID下沉到指定位置

删除ID就简单了,直接可以使用lists的删除命令,通过value删除

需要使用分页,则主要是使用命令 LRANGE key start end  指定开始的index及结束的index.按分页要求取一段数据

然后把取到这的段ID数组,放入memcache中得到文章的标题等信息,最后在php中组成数组,输出。这样一个列表缓存就搞定了


redis的应用:排序好友中的积分

先贴代码:

[codesyntax lang=”php”]
<?php

require_once(‘redis.php’);
$redis = new Redis();
$redis->connect();
$uid=111;
$fried_uid_list = array(123,456,789,101);
//增加好友
foreach ($fried_uid_list as $v)
{
$redis->sadd($uid.’:friend:list’ ,$v);
}
//uid:sort:123
//uid对应的积分
$redis->set(‘uid:sort:111’,9000);
$redis->set(‘uid:sort:123’,1000);
$redis->set(‘uid:sort:456’,6000);
$redis->set(‘uid:sort:789’,100);
$redis->set(‘uid:sort:101’,5999);

//uid infor
$use_infor_list = array(
111=>array(‘uid’=>111,’name’=>’wgr’),
123=>array(‘uid’=>123,’name’=>’lucy’),
456=>array(‘uid’=>456,’name’=>’marry’),
789=>array(‘uid’=>789,’name’=>’ice’),
101=>array(‘uid’=>101,’name’=>’jack’),
);
foreach ($use_infor_list as $v)
{
$redis->set(‘uid:’.$v[‘uid’] , json_encode($v));
}
$result = $redis->sort(‘111:friend:list by uid:sort:* get uid:* ‘ );
var_dump($result);
?>

[/codesyntax]
结果是:
array(4) {
[0]=>
string(24) “{“uid”:789,”name”:”ice”}”
[1]=>
string(25) “{“uid”:123,”name”:”lucy”}”
[2]=>
string(25) “{“uid”:101,”name”:”jack”}”
[3]=>
string(26) “{“uid”:456,”name”:”marry”}”