Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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
Python 对于同一对象,从本地redis首次获取总是比后续获取快_Python_Redis - Fatal编程技术网

Python 对于同一对象,从本地redis首次获取总是比后续获取快

Python 对于同一对象,从本地redis首次获取总是比后续获取快,python,redis,Python,Redis,我一直在把redis当作程序的缓存来摆弄,我有一种奇怪的行为,我无法理解。 我在同一个1MB对象上做了几次get,第一次get总是更快 Redis server在运行时没有任何配置$Redis server 连接创建一次:rc=redis.redis(host='127.0.01',port=6379,db=0) get是这样完成的: from timeit import default_timer as timer for i in range(7): s = timer() bu

我一直在把redis当作程序的缓存来摆弄,我有一种奇怪的行为,我无法理解。 我在同一个1MB对象上做了几次get,第一次get总是更快

Redis server在运行时没有任何配置
$Redis server

连接创建一次:
rc=redis.redis(host='127.0.01',port=6379,db=0)

get是这样完成的:

from timeit import default_timer as timer
for i in range(7):
   s = timer()
   buf = rc.get(bk)
   redis_keys[bk] = buf
   t = timer()
   ...
   sleep(1)
elapsed: 3.965349002100993
elapsed: 5.852620000950992
elapsed: 6.301352994341869
elapsed: 4.343975997471716
elapsed: 5.502833999344148
现在如果我打印经过的时间,我会得到如下结果:

from timeit import default_timer as timer
for i in range(7):
   s = timer()
   buf = rc.get(bk)
   redis_keys[bk] = buf
   t = timer()
   ...
   sleep(1)
elapsed: 3.965349002100993
elapsed: 5.852620000950992
elapsed: 6.301352994341869
elapsed: 4.343975997471716
elapsed: 5.502833999344148
如果我将get to文件的内容写入一个文件,似乎会使其更加激进:

elapsed: 4.384059997391887
elapsed: 8.715648000361398
elapsed: 8.873455997672863
elapsed: 8.82012600050075
elapsed: 8.847879005770665
这可能是什么原因?也许我丢失了一些redis配置


谢谢。

以为我禁用了THP,但之后我没有重新启动redis。解决方案是运行以下命令并重新启动redis服务器

echo never | sudo tee -a /sys/kernel/mm/transparent_hugepage/enabled
echo never | sudo tee -a /sys/kernel/mm/transparent_hugepage/defrag
从这个问题: