记一次redis的深入研究

在一次尝试中发现了,其实redis也是有延迟的。我的代码思路是这样的:判断某个key是否存在,不存在就标记一个时间点,存在就不标记。我用redis的列表来实现这个功能。

代码如下:

$identifier = 'kevin'; //桶的标识符
$redis      = new redis();
$redis->connect('127.0.0.1', 6379);
$seed   = $this->microtime_format('Y-m-d H:i:s.x', $this->microtime_float());
$exists = $redis->exists($identifier);
if (!$exists) {
     $redis->rpush($identifier, $seed);
}

上面的代码,在用浏览器访问的时候列表中始终只有一条value。这是因为,手动刷新再快也是有时间差的。

然后,我用ab模拟了并发进行了测试

ab -n100 -c10 http://xxxx

ab -n100 -c20 http://xxxx

第一次模拟了10个并发,第二次模拟了20个并发。结果得到的数据是一样的。

Array ( [0] => 2017-10-14 10:28:12.8315 [1] => 2017-10-14 10:28:12.8335 [2] => 2017-10-14 10:28:12.8331 [3] => 2017-10-14 10:28:12.8312 [4] => 2017-10-14 10:28:12.8319 [5] => 2017-10-14 10:28:12.8327 )

列表中都是保持6个value。再模拟第二次并发的时候,我是把记录清楚了的,所以,不存在累积的问题。

这说明,redis在判断key是否存在也是有延迟的。只不过延迟比较小,都是微妙级别的。毕竟,redis作为一个服务存在,又是用C编写的,执行肯定是需要时间的。

转载于:https://my.oschina.net/jiangbianwanghai/blog/1550598

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值