资讯专栏INFORMATION COLUMN

redis深度理解底层锁原理

Taonce / 2425人阅读

摘要:总结上面的这些所谓锁,也就是利用了,还有自带的来进行操作的一定保证,也就间接的实现锁的操作,这也是基于对的底层原理理解。

redis锁

redis的锁分别有INCR、SETNX、SET,那么我们就开始来谈谈他们的用法和场景吧!

1.INCR:(计时器,+1操作)
    a) 语法:INCR key
    b) 场景:
        1)控制api 1秒内的多次访问 ;
        2)记录用户每天访问网站的登录次数 ;

    c) 为何我们说这个怎么能算锁呢,当然,多带带它肯定是算不了锁的,因为它本身就不断的+1 +1,那我们怎么办呢,来看下面的:
        1) 我们如何实现场景1) 呢?

FUNCTION LIMIT_API_CALL(ip)
ts = CURRENT_UNIX_TIME()
keyname = ip+":"+ts
current = GET(keyname)
IF current != NULL AND current > 10 THEN
    ERROR "too many requests per second"
ELSE
    MULTI
        INCR(keyname,1)
        EXPIRE(keyname,1)
    EXEC
    PERFORM_API_CALL()
END

        2) 我们如何实现场景2) 呢?

INCR key

        然后我们在使用INCR的时候,一般都是要借助EXPIRE这个命令来结合使用:(我始终觉得这种使用的场景太局限了,也就一秒,而且也只能+1,在增 1 就会不行,实际上我们也就控制数量为 1 而已了,保证只能为 1)

$redis->incr($key);
$redis->expire($key, $outtime); //设置生成时间为1秒

2.SETNX: 这个我就不讲了,因为在redis 2.6.12版本就会被抛弃的了

3.SET:
    a) 语法:SET KEY VALUE [EX seconds] [PX milliseconds] [NX|XX]
    b) 场景:
        1) set最大可以接受512M的长度,所以缓存放这里也是没问题哒;
        2) 来对数据进行添加,比如要添加某个用户,如果存在,则不给予操作。
    c) 其实这个锁的实现也就是利用了set的NX ,因为NX是如果存在,则不进行添加或修改,然后同时SET也是有expires的过期时间来释放锁的。

总结:
    上面的这些所谓锁,也就是利用了expire,还有自带的NX来进行操作的一定保证,也就间接的实现锁的操作,这也是基于对redis的底层原理理解。

关注回复 wxq ,验证后即加入php微信群,即将在公众号深度剖析redis的事务锁 + 分布式锁

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/76543.html

相关文章

  • redis深度理解底层原理

    摘要:总结上面的这些所谓锁,也就是利用了,还有自带的来进行操作的一定保证,也就间接的实现锁的操作,这也是基于对的底层原理理解。 redis锁 redis的锁分别有INCR、SETNX、SET,那么我们就开始来谈谈他们的用法和场景吧! 1.INCR:(计时器,+1操作)    a) 语法:INCR key    b) 场景:        1)控制api 1秒内的多次访问 ;        2...

    OBKoro1 评论0 收藏0
  • 上古程序猿坚决反对用Redis,我该怎么说服他?

    摘要:前段时间,有个人吐槽自己的同事是上古程序猿,一直坚持反对使用。上古程序猿坚决反对用,我该怎么说服他分布式锁如果你是一位后端工程师,面试时八成会被问到,特别是大厂,不仅要求能简单使用,还要深入理解底层原理,具备解决常见问题的能力。 前段时间,有个人吐槽自己的同事是上古程序猿,一直坚持反对使用Redis。那位上古程序猿设计公司...

    番茄西红柿 评论0 收藏2637
  • 上古程序猿坚决反对用Redis,我该怎么说服他?

    摘要:前段时间,有个人吐槽自己的同事是上古程序猿,一直坚持反对使用。那位上古程序猿设计公司的业务系统时候,始终坚持永远不要用缓存其他人想用,例如做个接口防重复,一定要用数据库来实现,包括定期失效之类的功能。项目中使用,主要考虑性能和并发。 前段时间,有个人吐槽自己的同事是上古程序猿,一直坚持反对使...

    不知名网友 评论0 收藏0

发表评论

0条评论

Taonce

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<