52 2.0 KB

12345678910111213141516171819202122232425262728293031
  1. ---
  2. title: [RFC] Caching streams using Redis
  3. author: notabug.org/biodantas
  4. time: Tue, 13 Aug 2019 19:15:29 UTC
  5. status: open
  6. ---
  7. author: notabug.org
  8. time: Tue, 13 Aug 2019 19:15:29 UTC
  9. content: -----
  10. Like Chimo pointed out in an issue in their Redis plugin for GNU social (now integrated), seen [here](https://github.com/chimo/gs-rediscache/issues/2) it should be possible to cache notice streams. To this effect, it's necessary to > figure out which `:user/all` streams to invalidate when new notices are added/deleted. A good starting point might be to get every local user who is subscribed to the author of the inserted/deleted notice, and invalidate their `:user/all` streams. I don't have much experience with this type of thing and would appreciate some insight on the best way to do it.
  11. -----
  12. author: notabug.org
  13. time: Thu, 15 Aug 2019 13:58:56 UTC
  14. content: -----
  15. I'm not sure about why just local users... But, if only local users are relevant, there are events like onNoticeDistribute that you can catch for handling the proposed logic...
  16. -----
  17. author: notabug.org
  18. time: Thu, 15 Aug 2019 15:23:35 UTC
  19. content: -----
  20. I don't think what Chimo meant was that only local users are relevant. I think it was just that they weren't entirely sure how it should be handled. But I agree that we could simply invalidate the caches of all users who follow the author.
  21. -----
  22. author: notabug.org
  23. time: Thu, 15 Aug 2019 21:30:02 UTC
  24. content: -----
  25. Ah, sorry, I had misread. @local_user posts @another_local_user is subscribed to @local_user thus his notice stream is invalidated @remote_user posts @local_user is subscribed to @remote_user thus his notice stream is invalidated --- So, essentially, you need the attention profiles for every saved notice. I guess you will want the [StartNoticeSave](https://notabug.org/diogo/gnu-social/src/nightly/classes/Notice.php#L708) event and the [getAttentionProfiles()](https://notabug.org/diogo/gnu-social/src/nightly/classes/Notice.php#L1868) method.
  26. -----