項目開發(fā)Redis分頁,緩存問題解決

Redis緩存存儲問題的解決

  • 1.隊列存儲問題的解決
$groupMessage = "{$groupId}_groupMessage";
foreach($data as $item){
      $item_json=json_encode($item);
      $redis->lPush($groupMessage,$item_json);
}

對于把從數(shù)據(jù)庫中獲取的數(shù)據(jù)存儲存儲到redis隊列時,在剛開始處理的時候,直接把$data整體存儲為json格式進行存儲,無法用lrange()取得數(shù)據(jù)。使用循環(huán)每一條數(shù)據(jù)進行json格式的轉換,就可以使用lrange.

    1. 從redis取出的數(shù)據(jù)轉換為數(shù)組格式
 $pageOne=json_decode($item,true);

必須添加true,否則取出的數(shù)據(jù)是對象,而非數(shù)組。

PHP取數(shù)組數(shù)據(jù)的問題

 $resultMessage=array_slice($result,0,$number);

利用Redis“分頁展示”數(shù)據(jù)的思路

  • 1.設置4個參數(shù) $groupId,$page,$number,$lastTime
  * @param $groupId '進入圈子id'
  * @param $page    '偏移量即第幾頁'
  * @param $number  '每頁請求數(shù)據(jù)'
  * @param $lastTime '最后的時間' 此用戶發(fā)布信息的時間
  • 2.防止數(shù)據(jù)的重復問題的解決
    問題:取出第一頁數(shù)據(jù),之后,又有很多人發(fā)布信息存入redis后,會對取數(shù)據(jù)會重復。
    解決方法:只能更新此用戶發(fā)布信息時間前的$number條數(shù)據(jù)可以把從redis中取出的數(shù)據(jù),轉換為數(shù)組格式,并進行遍歷,比較時間,取的此時間后的$number條數(shù)據(jù)。
  • 3.數(shù)據(jù)更新的問題的理解
    每次進入圈子,無論是圈子的任何人進入,都會進行刷新數(shù)據(jù),redis緩存都會重新處理,所以只要在第一頁就會進行緩存,剩下的幾頁不再重新進行緩存,只從redis中取數(shù)據(jù)遍歷比較時間。

接口問題的新的學習點

對現(xiàn)在項目中存儲groupId來講,看線框圖中直接傳遞groupId就好,但是接口問題是要考慮所有可能遇到的問題,如果某個圈子是被禁止展示,或者圈子是不存在,但在post所有數(shù)據(jù)時,沒有判斷groupID是否存在,就會出現(xiàn)問題,總而言之,接口不僅要根據(jù)前端的設計返回需要數(shù)據(jù),而且還要考慮所有傳遞的參數(shù),接收的參數(shù)合理性的判斷與檢查。
接口,考慮安全,穩(wěn)定,全面。

總結

2017年7月29日 好好學習,天天向上,今天也是。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容