对于需要遍历的列表数据,我们有必要通过缓存来减少对数据库的读写压力从而提高项目质量,所以,对数据库的增删改查都需要同时操作redis,使得两者保持同步。
首先,laravel的DB方法得到的是一个对象,下面是一个对象转数组的方法。
public static function objToArray($obj)
{
$_arr = is_object($obj)? get_object_vars($obj) :$obj;
foreach ($_arr as $key => $val){
$val=(is_array($val)) || is_object($val) ? self::objToArray($val) :$val;
$arr[$key] = $val;
}
return $arr;
}
然后,通过redis的list 和hash类型来构造出类似mysql表的数据关系,list作为这个表的唯一索引,hash中存的数组就相当于某个索引对应的列,这样,将mysql中取得的数据通过遍历,插入到redis中,注意list和hash的对应关系,从redis中读取数据的时候,将负责该业务数据的lish和hash进行遍历,拼装数组并返回。总之,缓存的原则就是增删改查都要和mysql保持一致。
常用方法汇总
del // 删除key
exists // 检查key是否存在
expire // 给一个key设置存活时间
hgetall // 返回指定key的哈希中所有键值对的数组
hmset //将键值对数组存入指定key的哈希中
hset // 设置指定key的哈希中某个字段的值
lrange //获得指定范围的元素的数组 lrange(0, -1)获得所有
rpush //从列表的右侧插入一个值
redis命令大全
这是redis官网,命令页很精简很清晰,原生redis语法predis都是能直接用的,基本上看看就会用了