haopoboy / ads-exposure-test

0 stars 0 forks source link

Will it work in Redis? #15

Open guyspy opened 4 years ago

guyspy commented 4 years ago

實踐 cap 與 release 的核心是這一行程式碼 https://github.com/haopoboy/ads-exposure-test/blob/issue%2311/src/main/kotlin/io/github/haopooby/model/Counter.kt#L16

上線計畫中有提到實際跑 prod 的時候會改成 redis,以處理 Caffeine 無法支援 cluster 的缺憾 但我好奇類似的做法在 redis 中是否會正常運作?

在此想請您寫額外幾行概念驗證用的程式碼,把 Caffeine 換成 Redis(舊的 code 不用拔掉沒關係),並且附上「足以證明在 Redis 中行為合乎預期」的測試結果(撰寫 test case ,或是若沒有那麼多時間寫 test,用手動測試印出 log 的方式也可以的!)

haopoboy commented 4 years ago

Hi 豬排, 確實不行,目前想法是先轉用 Redis expiration 試試看 另外也必須取消取得全部廣告數量的用法,因於 Redis 搜尋不到高效能的方式 所以規劃實作可能會轉成 blocked list re-mapping on Redis profile

我目前進度到 Reids profile,到時有方案在提交

Related to #11

guyspy commented 4 years ago

好的。新寫的 Code 可以不用到非常完整,做到概念驗證就好

haopoboy commented 4 years ago

好的,我先留下目前想法

  1. 透過 exposed 取得目前使用者的封鎖清單
  2. 透過 re-mapping 將封鎖清單依序列重新索引到新的廣告,參考如下 https://leetcode.com/problems/random-pick-with-blacklist/discuss/144624/Java-O(B)-O(1)-HashMap
  3. 再用類似 pick() 方式取得即可