PHP+redis 웨 이 보 의 푸 시 모델 사례 분석 실현

본 논문 의 사례 는 PHP+redis 가 마이크로 보 를 실현 하 는 푸 시 모델 을 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
최근 에 redis 에 관 한 내용 을 보고 redis 를 이용 하여 간단 한 웨 이 보 프로젝트 를 썼 는데 이 글 은 푸 시 모델 에 관 한 것 이다.
푸 시 모델
푸 시 모델 이란 사용자 가 웨 이 보 를 발표 할 때 웨 이 보 를 팔 로 워 와 자신 에 게 푸 시 한 다음 에 다른 팔 로 워 가 로그 인하 면 발 표 된 웨 이 보 를 볼 수 있다 는 것 이다.
웨 이 보 프로젝트 데이터 구조 디자인
사용자 테이블 디자인
등록 할 때 user 데 이 터 를 redis 에 기록 합 니 다.key 는 다음 과 같 습 니 다.
user 데이터 의 key
사용자 이름=user:uesrid:$uesrid:username
비밀번호=user:userid:$userid:password
사용자 이름 으로 로그 인 해 야 하기 때문에 사용자 이름 에 따라 사용자 id 를 조회 할 수 있 습 니 다.

user:username:userid:$userid

관심 있 는 사람과 팬 디자인.
모든 사용자 가 관심 을 가 지 는 동작 을 한 후에 redis 에서 두 개의 무질서 한 집합 set 를 유지 합 니 다.하 나 는 following 이 고 하 나 는 follower 입 니 다.following 집합 은 제 가 관심 을 가 지 는 사람 이 고 follower 집합 은 제 팬 입 니 다.모든 사용자 가 이러한 두 개의 집합 을 유지 하고 userid 로 구분 해 야 합 니 다.
마이크로 블 로그 디자인
모든 웨 이 보 의 정 보 는 hash 구조 로 저장 되 고 서로 다른 웨 이 보 id 에 따라 구분 된다.모든 웨 이 보 는 다음 과 같은 정보 가 있다.발표 자 id,발표 자 닉네임,발표 시간,웨 이 보 내용 이다.
푸 시 미터 디자인
사용자 가 웨 이 보 를 발표 할 때 웨 이 보 를 자신의 팬 에 게 추천 하고 모든 팬 들 은 웨 이 보 를 추천 하 는 링크 를 유지 합 니 다.이 링크 는 50 개의 최신 웨 이 보 만 저장 합 니 다.푸 시 시트 에 저 장 된 것 은 웨 이 보 id 입 니 다.
조작 에 주목 하 다
우 리 는 redis 에서 두 개의 무질서 한 집합 set 를 유지 합 니 다.하 나 는 following 이 고 하 나 는 follower 입 니 다.following 집합 은 제 가 주목 하 는 사람 이 고 follower 집합 은 제 팬 입 니 다.모든 사용자 가 이러한 두 집합 을 유지 하고 userid 로 구분 해 야 합 니 다.
핵심 코드:

$conn = connredis();//  redis
if($f){//       
 $conn->sadd('following:'.$user['userid'],$userid);
 $conn->sadd('follower:'.$userid,$user['userid']);
}else{
 $conn->srem('following:'.$user['userid'],$userid);
 $conn->srem('follower:'.$userid,$user['userid']);
}

발표 하 다
자신의 팬 들 을 옮 겨 다 니 며 모든 팬 들 에 게 웨 이 보 를 보 내 고 추 송 된 웨 이 보 를 모든 사용자 의 푸 시 리스트 에 저장 합 니 다.
핵심 코드:

//1、    
$conn = connredis();//  redis
$postid = $conn->incr('global:postid');//    id
//      
$conn->hmset('post:postid:'.$postid,['userid'=>$user['userid'],'username'=>$user['username'],'time'=>time(),'content'=>$content]);
//2、    
$fans = $conn->smembers('follower:'.$user['userid']);//      
$fans[] = $user['userid'];//        
foreach($fans as $u){
 $conn->lpush('receivepost:'.$u,$postid);
 $conn->ltrim('receivepost:'.$u,0,49);//         50 
}

전시 하 다
먼저 redis 를 연결 한 다음 에 자신의 트 위 터 정 보 를 얻 고 트 위 터 를 옮 겨 다 니 며 웨 이 보 내용 을 얻 고 마지막 으로 자신의 팬 과 관심 수 를 얻 습 니 다.데이터 전시 만 하면 됩 니 다.

//       id
$conn = connredis();
$postids = $conn->sort('receivepost:'.$user['userid'],['sort'=>'desc']);
//    
$posts = [];
foreach($postids as $postid){
$posts[] = $conn->hmget('post:postid:'.$postid,['userid','username','time','content']);
}
//        
$fansnum = $conn->scard('follower:'.$user['userid']);
$follownum = $conn->scard('following:'.$user['userid']);

총결산
푸 시 모델 의 웨 이 보 사례 는 실현 이 비교적 간단 하지만 푸 시 모델 은 성능 에 영향 을 미친다.만약 에 내 가 큰 V 라면 웨 이 보 의 관심 수가 2000 W 가 된다.내 가 웨 이 보 를 보 낼 때 2000 W 개인 에 게 웨 이 보 를 보 내야 한다.그러나 많은 사람들 이 좀 비 가루 이기 때문에 성능 에 어느 정도 영향 을 미 친 다 는 것 을 알 수 있다.나 는 푸 시 모델 을 당 김 모델 로 바 꿀 수 있다.그러면 이 문 제 를 해결 할 수 있다.
더 많은 PHP 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 논문 에서 말 한 것 이 여러분 의 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기