巴扎黑2017-04-22 09:01:31
뉴스에 ID나 고유 식별자가 있는 경우. redis 컬렉션 유형 사용을 고려할 수 있습니다. 그리고 컬렉션의 고유성으로 인해 중복 추가 문제도 방지됩니다!
redis.sadd('personmark:userID',newsID);//사용자 컬렉션에 요소 추가
redis.smembers('personmark:userID');//사용자가 수집한 모든 뉴스 ID를 한 번에 가져옵니다
巴扎黑2017-04-22 09:01:31
정렬된 집합 zset 사용
키는 사용자 ID입니다.
member는 뉴스의 고유 ID입니다.
점수는 전날부터 시작하는 날짜 증분입니다(예: 2015-1-1부터 오늘의 점수는 155인가요?). 점수가 있으면 정렬하지 않고 바로 꺼내서 표시할 수 있습니다. >
zadd(키, 점수, 멤버):뉴스 추가
zrank(key, member): 작은 것부터 큰 것까지 점수별로 반환합니다. 즉, 수집된 뉴스는 새로운 것부터 오래된 것 순으로 정렬됩니다.
zrangebyscore(key, min, max): 처음부터 끝까지의 점수 컬렉션을 반환하며, 뉴스 페이지 넘기기 표시를 구현하는 데 사용됩니다.
大家讲道理2017-04-22 09:01:31
키: 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 출력만 있으면 됩니다.
阿神2017-04-22 09:01:31
1층 답변이 아주 좋은데 여기서는 Redis를 캐시로 사용할 필요가 없고 그냥 데이터 저장소로 사용하면 된다는 점을 덧붙이고 싶습니다. Redis도 데이터베이스이기 때문입니다