redis数据类型及使用场景
# 哈希(hash)做数据存储
# 列表(list)保存哈希id
# 集合(set)存储唯一值
# redis不适合做多条件查询
# 启用-->添加,停用-->删除(列表可以看到已停用的数据)
# 删除-->删除(删除后列表看不到)
[*]添加:
$redis->multi();
$redis->hMSet(
'title_'.$id,
array(
'title_id' => $id,
'a' => $a,
'b' => $b,
)
);
$redis->rPush('title_id',$id);
$redis->sAdd('title_title_'.$title_id,$id);
$redis->exec();
[*]删除:
$redis->multi();
$redis->del('title_'.$id);
$redis->lRem('title_id',$id,0);
$redis->sRem('title_title_'.$title_id,$id);
$redis->exec();
[*]修改:
$redis->hMSet( 'title_'.$id,
array(
'a' => $a1,
'b' => $b1,
)
);
[*]查询: a. 列表查询:
$ret1 = $redis->sort( 'title_id',
array(
'alpha' => false,
'limit' => array($page - 1,$pagesize),
'sort' => 'desc'
)
);
$ret = array();
foreach($ret1 as $v){
$ret2 = $redis->hGetAll('title_'.$v);
$ret.push($ret2);
}
b. 条件查询(条件为id):
$ret1 = $redis->sort( 'title_title_'.$title_id,
array(
'alpha' => true,
'limit' => array($page - 1,$pagesize),
'sort' => 'desc'
)
);
foreach($ret1 as $v){
$ret2 = $redis->hGetAll('title_'.$v);
$ret.push($ret2);
}
[*]集合操作: a. 判断是否属于父级成员:
$ret = $redis->sIsMember('title_title_'.$title_id,$id);
b. 求交集:
$ret = $redis->sInter($key1,$key2,$key3,...);
c. 求长度:
$ret = $redis->sCard($key);
[*]设置过期时间:
$redis->multi();
$redis->set($key,$value);
$redis->expire($key,$second);
$redis->exec();
[*]排行榜: a. 添加:
$redis->zAdd($title,$score,$value);
b. 删除:
$redis->zRem($title,$value);
c. 增加分数:
$redis->zIncrBy($title,$score,$value);
d. 查看:
$redis->zRevRange($title,$start,$end,true);//分数从高到低
$redis->zRange($title,$start,$end,true);//分数从低到高
$redis->zScore($title,$value);//查看指定成员的分数
[*]队列:
while(true){
$ret = lPop($title);
sleep($second);
}
[*]排序:
$redis->sort( $key,
array(
'limit' => array($start,$len),
'sort' => 'asc' || 'desc',
'alpha' => false
)
);
页:
[1]