좋아요 시스템 디자인

2407 단어 go.pgsql
추석 명절 에 한가 로 이 아무 일 없 이 글 을 써 서 좋아요 서 비 스 를 하 였 는데, 여기에 기록 하 겠 습 니 다.
장면
글 을 읽 을 때 좋다 고 생각 하 는 글 들 은 모두 '좋아요' 를 눌 러 작가 에 대한 격려 와 지 지 를 표시 하고, 마지막 에 '좋아요' 를 취소 할 수도 있 으 며, 때로는 반복 적 으로 조작 하기 도 한다.
사용 자 는 개인 센터 에서 자신의 좋아요 목록 을 보 거나 다른 사람 이 자신의 글 에 대한 좋아요 상황 을 볼 수 있 습 니 다.그래서 디자인 할 때 중복 되 는 정 보 를 추가 할 수 있 습 니 다. 예 를 들 어 두상, 글 제목 등 입 니 다.
설계 하 다.
데이터 구조 디자인:
  • 좋아요 구조
  • 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"`
    }
    
  • SourceID 에 대한 설명 은 글 ID 일 수도 있 고 사용자 ID 일 수도 있 습 니 다. 그러면 글 의 좋아요 총 수 를 직접 얻 을 수 있 고 사용자 가 받 은 좋아요 총 수 를 얻 을 수 있 습 니 다.
    인터페이스 디자인
    다음 인터페이스 제공:
  • 좋아요 누 르 기: 좋아요 누 르 지 않 으 면 좋아요 누 르 기, 좋아요 누 르 면 취소
  • 글 좋아요 누적 획득
  • 글 에 따라 좋아요 목록 가 져 오기
  • 사용자 가 글 에 '좋아요' 를 눌 렀 는 지 판단
  • 사용자 가 획득 한 총 좋아요
  • 능률.
    '좋아요' 를 누 르 는 것 은 고주파 작업 으로 redis 를 사용 하여 캐 시 를 하여 데이터 베이스 에 미 치 는 영향 을 낮 추고 xiaolv 를 높 일 수 있 습 니 다.이 서 비 스 는 자신의 시스템 에서 만 사용 되 기 때문에 redis 모듈 을 추가 하지 않 았 습 니 다.
    총결산
    이상 개발 에 사 용 된 것 은 golang + pgsql 입 니 다.교류 학습 을 환영 합 니 다.
    제 개인 사이트 에서 사용 되 고 있 습 니 다. "맨 아래" 단 추 를 누 르 면 주 소 를 보 여 줍 니 다.

    좋은 웹페이지 즐겨찾기