django / djangoproject.com

Source code to djangoproject.com
https://www.djangoproject.com/
BSD 3-Clause "New" or "Revised" License
1.86k stars 939 forks source link

Used Django's builtin redis cache backend #1560

Open bmispelon opened 4 days ago

bmispelon commented 4 days ago

Fix for #1023

Two big questions that I don't have the answer to (yet?):

alexgmin commented 2 days ago

Two big questions that I don't have the answer to (yet?):

  • [ ] Should we re-populate the cache (somehow transferring the data from memcached to redis) as we deploy the default cache? How big of an impact would it have to clear the site's cache all at once?

On this I see two options:

This would also depend on what's stored in the default cache, based on a quick look it seems to be some trac stats for every user and a generation key for versioning (?). If that's the only thing all of this preparation could not be needed at all since the volume would be so low.

  • [ ] Will the docs-pages cache change seamlessly work as we change the backend (I think yes, but I haven't tested)

Since the backend changes, I feel like it would need testing, since django-redis-cache could use a different serializer/compressor. I know both are supported options, but not sure if they are enabled by default. I feel like this should be done after the default cache change to avoid risks.

  • [ ] Should we consider using hiredis to improve performance? I believe all that would be needed is to use redis[hiredis] in the requirements.

I'd suggest yes, but there's something to consider. Python 3.12 was released in October 2nd. However Python 3.12 wheels for hiredis-py weren't created until December 17th, I haven't checked in previous Python versions, but it could mean having to build the dependency in the future.