skip to Main Content

I am creating a Django app wherein I need to load and keep some data in memory when the server starts for quick access. To achieve this I am using Django’s AppConfig class. The code looks something like this :

from django.core.cache import cache
class myAppConfig(AppConfig):
    name = 'myapp'
     def ready(self):
        data = myModel.objects.values('A','B','C') 
        cache.set('mykey', data)

The problem is that this data in cache will expire after sometime. One alternative is to increase the TIMEOUT value. But I want this to be available in memory all the time. Is there some other configuration or approach which I can use to achieve this ?

2

Answers


  1. If you are using Redis. It does provide persistent data capture.

    Check it out in https://redis.io/topics/persistence

    You have to set it up by Redis Configuration.
    There will be two methods to keep the data persist in the cache after reboot – both of them will save the data in other formats in HDD. I will suggest you set up the AOF for your purpose since it will record every write operation. However, it will cause more space.

    Login or Signup to reply.
  2. The cache timeout argument can be set to None so that it never expires.

    cache.set('mykey', data, timeout=None)
    

    https://docs.djangoproject.com/en/5.0/topics/cache/#cache-arguments

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search