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 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.