gaohan 发表于 2018-11-2 10:42:00

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]
查看完整版本: redis数据类型及使用场景