美文网首页基础
Redis防阻塞小知识

Redis防阻塞小知识

作者: Real_man | 来源:发表于2019-02-04 15:30 被阅读142次

    Redis在现在的互联网公司中广泛运用,要说有哪些公司再用的话,我想可以反问一句,还有那个公司没有用Redis吗?

    之前Redis相关的知识有:
    Redis Cluster集群快速搭建
    基于Codis的Redis集群
    Redis基本数据类型与使用场景

    好吧,在生产环境上有时候数据量太大的话会导致Redis暂时阻塞,因为它是单线程的,这段时间会没有响应。
    比如说使用Keys命令,在某一时间有大量的key过期。那么如何解决呢?

    办法

    1. 假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如果将它们全部找出来?
      使用Scan命令,scan命令的时间复杂度虽然也是O(N),但它是分次进行的,不会阻塞线程。scan命令提供了limit参数,可以控制每次返回结果的最大条数。不过scan命令返回的结果有可能重复,因此需要客户端去重。


      image.png

    使用Scan命令就不会一下子返回大量的结果了。

    1. 如果有大量的key需要设置同一时间过期,一般需要注意什么?
      如果大量的key过期时间设置的过于集中,到过期的那个时间点,redis可能会出现短暂的卡顿现象。一般需要在时间上加一个随机值,使得过期时间分散一些。

    最后

    两个小知识点,记录一下

    参考

    相关文章

      网友评论

        本文标题:Redis防阻塞小知识

        本文链接:https://www.haomeiwen.com/subject/iibpsqtx.html