12345678910111213141516171819202122232425262728293031 |
- ---
- title: [RFC] Caching streams using Redis
- author: notabug.org/biodantas
- time: Tue, 13 Aug 2019 19:15:29 UTC
- status: open
- ---
- author: notabug.org
- time: Tue, 13 Aug 2019 19:15:29 UTC
- content: -----
- 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.
- -----
- author: notabug.org
- time: Thu, 15 Aug 2019 13:58:56 UTC
- content: -----
- 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...
- -----
- author: notabug.org
- time: Thu, 15 Aug 2019 15:23:35 UTC
- content: -----
- 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.
- -----
- author: notabug.org
- time: Thu, 15 Aug 2019 21:30:02 UTC
- content: -----
- 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.
- -----
|