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
为什么在Redis上连续运行相同的查询会产生越来越快的结果?_Redis - Fatal编程技术网

为什么在Redis上连续运行相同的查询会产生越来越快的结果?

为什么在Redis上连续运行相同的查询会产生越来越快的结果?,redis,Redis,我不相信redis会缓存命令的结果,对吗?如果是这样,那么为什么我会在我的redis服务器上看到相同查询的以下内容。作为参考,这是运行在VM中的redis。我按照中所述检查了smaps文件,发现在操作系统级别上没有交换(进程的交换都是0kb),但在VM中运行redis是否可能会将内存分页到磁盘并返回?或这些结果是由于对常用运行命令进行某种redis优化而产生的吗 redis 127.0.0.1:6379[4]> sinterstore testdb ClientId:1637 Publis

我不相信redis会缓存命令的结果,对吗?如果是这样,那么为什么我会在我的redis服务器上看到相同查询的以下内容。作为参考,这是运行在VM中的redis。我按照中所述检查了smaps文件,发现在操作系统级别上没有交换(进程的交换都是0kb),但在VM中运行redis是否可能会将内存分页到磁盘并返回?或这些结果是由于对常用运行命令进行某种redis优化而产生的吗

redis 127.0.0.1:6379[4]> sinterstore testdb ClientId:1637 PublisherId:1
(integer) 240001
(4.46s)
redis 127.0.0.1:6379[4]> sinterstore testdb ClientId:1637 PublisherId:1
(integer) 240001
(3.77s)
redis 127.0.0.1:6379[4]> sinterstore testdb ClientId:1637 PublisherId:1
(integer) 240001
(0.92s)
redis 127.0.0.1:6379[4]> sinterstore testdb ClientId:1637 PublisherId:1
(integer) 240001
(0.64s)
redis 127.0.0.1:6379[4]> sinterstore testdb ClientId:1637 PublisherId:1
(integer) 240001
(0.67s)
redis 127.0.0.1:6379[4]> sinterstore testdb ClientId:1637 PublisherId:1
(integer) 240001
(0.73s)
redis 127.0.0.1:6379[4]> scard ClientId:1637
(integer) 796529
redis 127.0.0.1:6379[4]> scard PublisherId:1
(integer) 311092
redis 127.0.0.1:6379[4]> sinterstore testdb ClientId:1637 PublisherId:1
(integer) 240001
(1.88s)
redis 127.0.0.1:6379[4]> sinterstore testdb ClientId:1637 PublisherId:1
(integer) 240001
(0.69s)

CPU缓存!非常有趣,有更多的阅读资料(除其他地方外)

答案如下: