IStockBoardTrendingCache.cs 1.1 KB

123456789101112131415161718192021
  1. using Application.Abstractions.Data;
  2. namespace Application.Abstractions.Stocks;
  3. /// <summary>트렌딩 1행 — 종목 코드·점수(랭킹 원점수).</summary>
  4. public sealed record StockTrendingEntry(string StockCode, int Score);
  5. /// <summary>
  6. /// 종목 가상보드 트렌딩 랭킹 Redis Sorted Set 캐시 (d2 §④·§⑥).
  7. /// 최근 24h PostStockTag 언급량 + StockBoardStats 총 글 수를 가중 합산한 점수로 랭크한다.
  8. /// 캐시 미스 시 DB 로 재시드(TTL ~10분) — RedisChatLeaderboard/PaperLeaderboardCache 패턴 복제.
  9. /// 종목명 조인은 호출 핸들러가 수행(코드→점수만 캐시).
  10. /// </summary>
  11. public interface IStockBoardTrendingCache
  12. {
  13. /// <summary>상위 count 개의 (코드, 점수)를 내림차순으로 반환. 캐시 미스 시 DB 재시드. 데이터 없으면 빈 목록.</summary>
  14. Task<IReadOnlyList<StockTrendingEntry>> GetTopAsync(int count, IAppDbContext db, CancellationToken ct = default);
  15. /// <summary>캐시 무효화 — 다음 조회가 최신 스냅샷으로 재시드.</summary>
  16. Task InvalidateAsync(CancellationToken ct = default);
  17. }