gpt4 book ai didi

django - 将 memcached 用作 Django 的 cached_db session 设置的缓存后端时控制其超时

转载 作者:行者123 更新时间:2023-12-04 17:41:05 24 4
gpt4 key购买 nike

在 Django 项目中使用 cached_db 类型的 session 缓存时:

1) 如何控制缓存后端的超时?例如,我希望保存在 memcached 中的每个 session 数据对象的 ttl 为 20 天。此外,我希望此 ttl 在后续写入时更新(如果发生)。

2) 如果 session 写入大量涌入,memcached 是否会自动扩展以消耗所有可用的 RAM?我可以指定内存分配吗?此外,如果数据激增,是否有任何最佳实践?当我看到 /etc/memcached.conf 时,似乎没有太多可以拉动的杠杆。

3) 成功将 ttl 添加到缓存的 session 对象后,如何测试它是否实际工作?

如果能得到一个说明性的答案就太好了。


背景:我过去一直依赖基于数据库的 session 缓存,直到现在才考虑转向 cached_db。因此,我对这个问题还不太了解。

我目前的缓存设置如下(在settings.py中设置):

    CACHES = {
'default': {
'BACKEND':'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION':'unix:/var/run/memcached/memcached.sock',
}
}

最佳答案

  1. 后端接受 TIMEOUT 环境。您还可以在 setting a particular cache entry 时指定不同的超时时间。 .

  2. Memcached 不会自动缩放。它接受 -m command line argument在启动时定义它应该用于缓存的最大内存量。这默认为 64MB。您还可以在操作期间使用命令 cache_memlimit <limit in MB> 更改此限制。 .我无法谈论什么是最佳实践 - 认为这是确定您获得何种负载以及您是否需要更多内存以避免因空间不足而导致缓存逐出的情况。

  3. 像这样:

    from django.core.cache import cache

    cache.set('test_key', 'test_value', timeout=10) # Short timeout of 10 seconds
    # 10 seconds later
    cache.get('test_key') # Should return None because the entry has expired

关于django - 将 memcached 用作 Django 的 cached_db session 设置的缓存后端时控制其超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54483193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com