Django缓存支持整数吗?

时间:2017-06-21 13:56:16

标签: php python django caching

我使用PHP填充memcached,Django读取缓存。

我在Django $access_token = $_POST['access_token']; 中创建了自定义make_key函数,因此密钥相同,Django不会对其进行修改。

settings.py

在缓存中存储和检索字符串时,一切正常。当我试图在memcache中存储一个整数值时出现问题。 PHP使用以下测试代码段。

def make_key(key, key_prefix, version):
    return key


CACHE_HOST = "localhost"

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': CACHE_HOST + ':11211',
        'KEY_FUNCTION': make_key
    }
}

如果我使用$host = "localhost"; $port = "11211"; $memObj = new Memcached(); $memObj->addServer($host, $port); $memObj->set('sample_key', 123); 直接从缓存查询上述密钥,我可以看到该值。但是,当我从Django那里做的时候,我得到了telnet localhost 11211。以下是我的Django测试片段。

None

现在,如果我在Django中设置密钥,那么我也可以在Django中获取密钥。

from django.core.cache import cache

print(cache.get('sample_key')) # prints None

直到这一点,我们得出结论,我可以设置缓存为Django中的整数 获取 Django < / strong>, PHP Telnet ,但是,如果我将缓存设置为PHP 中的整数,我只能获取它在 PHP Telnet

cache.set('sample_key', 123)
print(cache.get('sample_key')) # prints 123

经过一些调试后,我发现当Django设置+--------+---------------------+ | SET | GET | +--------+---------------------+ | Django | Django, PHP, Telnet | +--------+---------------------+ | PHP | PHP, Telnet | +--------+---------------------+ 时,它实际上将其设置为Integer。我从php Double找到了这个。

var_dump

现在,我尝试在PHP中将整数设置为double。令人惊讶的是,Django能够得到它。

var_dump($memObj->get('sample_key')); # prints double(123)

在Django,

$memObj->set('sample_key', 123.0);

TL;博士;

print(cache.get('sample_key')) # prints 123

那么,这里有什么问题,如何在PHP中设置一个整数并在Django中获取它?

1 个答案:

答案 0 :(得分:0)

这与Memcached getting null for String set with python and then get from Java

高度相关

您需要配置处理memcache的python库以增强语言之间的兼容性