좋아요 시스템 디자인
장면
글 을 읽 을 때 좋다 고 생각 하 는 글 들 은 모두 '좋아요' 를 눌 러 작가 에 대한 격려 와 지 지 를 표시 하고, 마지막 에 '좋아요' 를 취소 할 수도 있 으 며, 때로는 반복 적 으로 조작 하기 도 한다.
사용 자 는 개인 센터 에서 자신의 좋아요 목록 을 보 거나 다른 사람 이 자신의 글 에 대한 좋아요 상황 을 볼 수 있 습 니 다.그래서 디자인 할 때 중복 되 는 정 보 를 추가 할 수 있 습 니 다. 예 를 들 어 두상, 글 제목 등 입 니 다.
설계 하 다.
데이터 구조 디자인:
type Like struct {
ID string `json:"id" valid:"required,uuid" jsonapi:"primary,likes"`
// ID
UserID string `json:"userID" valid:"required,uuid" jsonapi:"attr,userID"`
// id
SourceID string `json:"sourceID" valid:"required,uuid" jsonapi:"attr,sourceID"`
// , : 、 ( )
Data string `json:"data" jsonapi:"attr,data"`
Deleted bool `json:"deleted" jsonapi:"attr,deleted"`
CreatedTime int64 `json:"createdTime" jsonapi:"attr,createdTime"`
}
Data 필드 는 다른 추가 정 보 를 전송 하고 클 라 이언 트 가 스스로 분석 하면 됩 니 다. 그러면 이 서 비 스 는 다른 곳 에서 사용 할 때 새로운 필드 를 추가 하지 않 아 도 됩 니 다.
type LikeCount struct {
ID string `json:"id" valid:"required,uuid" jsonapi:"primary,likesCount"`
Count int `json:"count" jsonapi:"attr,count"`
// ID、 ID
SourceID string `json:"sourceID" valid:"required,uuid" jsonapi:"attr,sourceID"`
Deleted bool `json:"deleted" jsonapi:"attr,deleted"`
CreatedTime int64 `json:"createdTime" jsonapi:"attr,createdTime"`
}
인터페이스 디자인
다음 인터페이스 제공:
'좋아요' 를 누 르 는 것 은 고주파 작업 으로 redis 를 사용 하여 캐 시 를 하여 데이터 베이스 에 미 치 는 영향 을 낮 추고 xiaolv 를 높 일 수 있 습 니 다.이 서 비 스 는 자신의 시스템 에서 만 사용 되 기 때문에 redis 모듈 을 추가 하지 않 았 습 니 다.
총결산
이상 개발 에 사 용 된 것 은 golang + pgsql 입 니 다.교류 학습 을 환영 합 니 다.
제 개인 사이트 에서 사용 되 고 있 습 니 다. "맨 아래" 단 추 를 누 르 면 주 소 를 보 여 줍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
go 의 값 전달 과 참조 전달절편 과 지 도 는 모두 인용 유형 이다.현지에서 새로운 변수 로 할당 되 었 을 때 같은 내부 데이터 구 조 를 가리킨다.따라서 그 중의 한 변 수 를 바 꾸 면 다른 변수 에 영향 을 줄 수 있다. 다음은 참조 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.