项目开发Redis分页,缓存问题解决

Redis缓存存储问题的解决

  • 1.队列存储问题的解决
$groupMessage = "{$groupId}_groupMessage";
foreach($data as $item){
      $item_json=json_encode($item);
      $redis->lPush($groupMessage,$item_json);
}

对于把从数据库中获取的数据存储存储到redis队列时,在刚开始处理的时候,直接把$data整体存储为json格式进行存储,无法用lrange()取得数据。使用循环每一条数据进行json格式的转换,就可以使用lrange.

    1. 从redis取出的数据转换为数组格式
 $pageOne=json_decode($item,true);

必须添加true,否则取出的数据是对象,而非数组。

PHP取数组数据的问题

  • 1.php 利用array_slice函数获取随机数组或前几条数据
    学习参考:http://www.jb51.net/article/72975.htm
 $resultMessage=array_slice($result,0,$number);

利用Redis“分页展示”数据的思路

  • 1.设置4个参数 $groupId,$page,$number,$lastTime
  * @param $groupId '进入圈子id'
  * @param $page    '偏移量即第几页'
  * @param $number  '每页请求数据'
  * @param $lastTime '最后的时间' 此用户发布信息的时间
  • 2.防止数据的重复问题的解决
    问题:取出第一页数据,之后,又有很多人发布信息存入redis后,会对取数据会重复。
    解决方法:只能更新此用户发布信息时间前的$number条数据可以把从redis中取出的数据,转换为数组格式,并进行遍历,比较时间,取的此时间后的$number条数据。
  • 3.数据更新的问题的理解
    每次进入圈子,无论是圈子的任何人进入,都会进行刷新数据,redis缓存都会重新处理,所以只要在第一页就会进行缓存,剩下的几页不再重新进行缓存,只从redis中取数据遍历比较时间。

接口问题的新的学习点

对现在项目中存储groupId来讲,看线框图中直接传递groupId就好,但是接口问题是要考虑所有可能遇到的问题,如果某个圈子是被禁止展示,或者圈子是不存在,但在post所有数据时,没有判断groupID是否存在,就会出现问题,总而言之,接口不仅要根据前端的设计返回需要数据,而且还要考虑所有传递的参数,接收的参数合理性的判断与检查。
接口,考虑安全,稳定,全面。

总结

2017年7月29日 好好学习,天天向上,今天也是。

你可能感兴趣的:(项目开发Redis分页,缓存问题解决)