Python 对于同一对象,从本地redis首次获取总是比后续获取快
我一直在把redis当作程序的缓存来摆弄,我有一种奇怪的行为,我无法理解。 我在同一个1MB对象上做了几次get,第一次get总是更快 Redis server在运行时没有任何配置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 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
从这个问题: