美文网首页基础
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防阻塞小知识

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

  • redis阻塞

    通过这篇文章你会知晓如下内容: redis阻塞的常规的内在原因和外在原因都有哪些? API不合理引起的阻塞排查方法...

  • Redis阻塞

  • 数据库交互(总结)

    防SQL注入知乎详解 常用数据库交互代码 mysql mongo mongo知识大全 redis

  • Redis 的RDB和AOF

    RDB (redis database redis数据库快照) 触发命令 SAVE阻塞 BGSAVE另起子线程,不...

  • Redis小知识

    更改Redis报序列化错误,ClassNotFind 问题描述: 更改环境上线,由于依赖的A项目更改为旧的redi...

  • Redis List

    在 redis 可以把 list 用作 栈、队列、阻塞队列

  • redis 详解系列之四(阻塞)

    redis 阻塞简介 redis是单线程架构,所有读写操作都是在一个线程上进行的,如果某个命令造成了阻塞,哪怕是轻...

  • Redis 如何高效安全删除大 Hash Key

    使用 SCAN 和 Pipeline 命令删除 Redis 的大 Key 删除操作会导致 Redis 线程阻塞,网...

  • redis阻塞问题

    以下是学习笔记 出现cpu过高的原因有:1、连接数过多,通过info clients查看2、慢查询,因为redis...

网友评论

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

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