像网易新闻收藏的功能,如果使用redis做缓存的话,应该如何实现?
迷茫
迷茫 2017-04-22 08:59:31
0
4
791

像网易新闻收藏的功能,如果使用redis做缓存的话,应该如何实现?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

모든 응답(4)
巴扎黑

뉴스에 ID나 고유 식별자가 있는 경우. redis 컬렉션 유형 사용을 고려할 수 있습니다. 그리고 컬렉션의 고유성으로 인해 중복 추가 문제도 방지됩니다!
redis.sadd('personmark:userID',newsID);//사용자 컬렉션에 요소 추가
redis.smembers('personmark:userID');//사용자가 수집한 모든 뉴스 ID를 한 번에 가져옵니다

巴扎黑

정렬된 집합 zset 사용
키는 사용자 ID입니다.
member는 뉴스의 고유 ID입니다.
점수는 전날부터 시작하는 날짜 증분입니다(예: 2015-1-1부터 오늘의 점수는 155인가요?). 점수가 있으면 정렬하지 않고 바로 꺼내서 표시할 수 있습니다. > zadd(키, 점수, 멤버):뉴스 추가
zrank(key, member): 작은 것부터 큰 것까지 점수별로 반환합니다. 즉, 수집된 뉴스는 새로운 것부터 오래된 것 순으로 정렬됩니다.
zrangebyscore(key, min, max): 처음부터 끝까지의 점수 컬렉션을 반환하며, 뉴스 페이지 넘기기 표시를 구현하는 데 사용됩니다.

大家讲道理

키: news_fav_uid
값: 뉴스 ID 모음(배열)
여기서 uid는 사용자 ID입니다.
$news_ids = 배열(1024,1025,1026);
echo json_encode($news_ids);
Memcached/Redis/MySQL을 사용하더라도 이렇게 저장할 수 있습니다.
array_push는 새 컬렉션을 $news_ids 배열의 끝에 푸시합니다.
시간별로 정렬하려면 json_decode로 디코딩하고 array_reverse로 배열을 뒤집은 다음 foreach 출력만 있으면 됩니다.

阿神

1층 답변이 아주 좋은데 여기서는 Redis를 캐시로 사용할 필요가 없고 그냥 데이터 저장소로 사용하면 된다는 점을 덧붙이고 싶습니다. Redis도 데이터베이스이기 때문입니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿