Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 不';Django缓存是否支持整数?_Php_Python_Django_Caching - Fatal编程技术网

Php 不';Django缓存是否支持整数?

Php 不';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

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

我已经在Django
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中将缓存设置为integerPHPTelnet,但是,如果我在PHP中将缓存设置为integer,那么,我只能在PHPTelnet获取它

+--------+---------------------+
| SET    | GET                 |
+--------+---------------------+
| Django | Django, PHP, Telnet |
+--------+---------------------+
| PHP    | PHP, Telnet         |
+--------+---------------------+
经过几次调试后,我发现当Django设置一个
整数时,它实际上将其设置为
双精度。我从php
var\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库,以增强语言之间的兼容性