Php 不';Django缓存是否支持整数?
我使用PHP填充memcached,使用Django读取缓存 我已经在DjangoPhp 不';Django缓存是否支持整数?,php,python,django,caching,Php,Python,Django,Caching,我使用PHP填充memcached,使用Django读取缓存 我已经在Djangosettings.py中设置了自定义的make_键功能,以便键相同,Django不会修改它 def make_key(key, key_prefix, version): return key CACHE_HOST = "localhost" CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memca
settings.py中设置了自定义的make_键
功能,以便键相同,Django不会修改它
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
}
}
在缓存中存储和检索字符串时,一切正常。当我试图通过在memcache中存储一个整数值时,问题出现了。PHP使用以下测试代码段
$host = "localhost";
$port = "11211";
$memObj = new Memcached();
$memObj->addServer($host, $port);
$memObj->set('sample_key', 123);
from django.core.cache import cache
print(cache.get('sample_key')) # prints None
如果我使用telnet localhost 11211
直接从缓存中查询上述键,则可以看到该值。但是,当我在Django做这件事时,我得到的是无
。下面是我的Django测试片段
$host = "localhost";
$port = "11211";
$memObj = new Memcached();
$memObj->addServer($host, $port);
$memObj->set('sample_key', 123);
from django.core.cache import cache
print(cache.get('sample_key')) # prints None
现在,如果我在Django中设置键,那么我也可以在Django中获得它
cache.set('sample_key', 123)
print(cache.get('sample_key')) # prints 123
到目前为止,我的结论是,我可以在Django中将缓存设置为integer,在Django中将缓存设置为integer,PHP和Telnet,但是,如果我在PHP中将缓存设置为integer,那么,我只能在PHP和Telnet中获取它
+--------+---------------------+
| SET | GET |
+--------+---------------------+
| Django | Django, PHP, Telnet |
+--------+---------------------+
| PHP | PHP, Telnet |
+--------+---------------------+
经过几次调试后,我发现当Django设置一个整数时,它实际上将其设置为双精度。我从phpvar\u dump
中找到了这个
var_dump($memObj->get('sample_key')); # prints double(123)
现在,我尝试在PHP中将整数设置为双精度。令人惊讶的是,Django能够得到它
$memObj->set('sample_key', 123.0);
在Django
print(cache.get('sample_key')) # prints 123
tl;博士强>
$memObj->set('sample_key', 123.0); # in PHP
print(cache.get('sample_key')) # in Django # prints 123
$memObj->set('sample_key', 123); # in PHP
print(cache.get('sample_key')) # in Django # prints None
那么,这里的问题是什么,我如何在PHP中设置一个整数并在Django中获取它呢?这与
您需要配置处理memcache的python库,以增强语言之间的兼容性