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.
- 從redis取出的數(shù)據(jù)轉換為數(shù)組格式
$pageOne=json_decode($item,true);
必須添加true,否則取出的數(shù)據(jù)是對象,而非數(shù)組。
PHP取數(shù)組數(shù)據(jù)的問題
- 1.php 利用array_slice函數(shù)獲取隨機數(shù)組或前幾條數(shù)據(jù)
學習參考:http://www.jb51.net/article/72975.htm
$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日 好好學習,天天向上,今天也是。