You can also get a very nice bump in throughput if you eliminate the `validate_key` check
--
You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-developers+unsubscribe@googlegroups.com.
To post to this group, send email to django-developers@googlegroups.com.
Visit this group at https://groups.google.com/group/django-developers.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/fdb91901-c378-4258-9201-d24a9f5f103e%40googlegroups.com.
I'm +1 for moving to LRU too, the eviction algorithm has always looked weird to me. And Josh's library shows there are valid uses of local memory caching in applications - perhaps moreso these days than when Django added caching and memcached was the latest thing.You can also get a very nice bump in throughput if you eliminate the `validate_key` check+1 to adding an option to disable the check as well. If you're using a LocMemCache in production, you probably don't care about compatibility with memcached, because you'll be using it for different types of data.
On 5 January 2018 at 02:53, Josh Smeaton <josh.s...@gmail.com> wrote:
To lend some weight to this, I've implemented an LRU loc mem cache and have done some benchmarking. There are some graphs in the readme: https://github.com/kogan/django-lrucache-backend - which I've written a little about https://devblog.kogan.com/blog/a-smarter-local-memory-django-cache-backend (I don't think my particular implementation is useful to core, as it relies on a 3rd party C lib, but using OrderedDict is cool!).You can also get a very nice bump in throughput if you eliminate the `validate_key` check, which does a character by character check of the key to avoid issues with particular characters in memcache.We don't want to be promoting locmemcache too much, but that said, if we can provide a better default then we should in my opinion.
On Friday, 5 January 2018 10:12:39 UTC+11, Grant Jenks wrote:Hi all--Long time user, first time poster, here. Thank you all for Django!The current local memory cache (locmem) in Django uses a pseudo-random culling strategy. Rather than random, the OrderedDict data type can be used to implement an LRU eviction policy. A prototype implementation is already used by functools.lru_cache and Python 3 now supports OrderedDict.move_to_end and OrderedDict.popitem to ease the implementation.I have created an example set of changes at https://github.com/grantjenks/django/tree/ticket_28977 in commit https://github.com/grantjenks/django/commit/b06574f6713d4b7d367d7a11e0268fb62f5fd1d1Is there a consensus as to the value of these changes?Sincerely,Grant Jenks
--
You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-develop...@googlegroups.com.
To post to this group, send email to django-d...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-developers.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/fdb91901-c378-4258-9201-d24a9f5f103e%40googlegroups.com.
--Adam
--
You received this message because you are subscribed to a topic in the Google Groups "Django developers (Contributions to Django itself)" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/django-developers/Gz2XqtoYmNk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to django-developers+unsubscribe@googlegroups.com.
To post to this group, send email to django-developers@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/933c2a3e-896d-45c8-a1a9-17ef8abf42c5%40googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to django-developers+unsubscribe@googlegroups.com.
To post to this group, send email to django-developers@googlegroups.com.
Visit this group at https://groups.google.com/group/django-developers.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/CAG0JsGw%3DdFr33sTp93JuEHBBbLnjYfO0w5kG4%3Dnab58F7Omcsg%40mail.gmail.com.
To unsubscribe from this group and all its topics, send an email to django-develop...@googlegroups.com.
To post to this group, send email to django-d...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-developers.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/933c2a3e-896d-45c8-a1a9-17ef8abf42c5%40googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-develop...@googlegroups.com.
To post to this group, send email to django-d...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-developers.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/CAG0JsGw%3DdFr33sTp93JuEHBBbLnjYfO0w5kG4%3Dnab58F7Omcsg%40mail.gmail.com.
--Adam