摘要: 客户端与服务器端的通信与redis管道 服务器的任务调度 IO模型采用的是多路复用IO。 redis会为每个客户端套接字都分配一个指令队列,redis会从指令队列中取出指令执行,还会为每个客户端套接字分配一个相应队列,将指令的结果返回给客户端。 redis处理定时任务时会将定时任务放入一个堆中,堆顶 阅读全文
posted @ 2019-09-16 11:07 勇闯8 阅读(540) 评论(0) 推荐(0) 编辑
摘要: keys、scan、bigkeys、查看key的存储方式 keys keys 正则表达式 来找到所有符合要求的key,但是这个指令有几个缺点,首先就是没有限制参数,可能查出超多的数据,还有就是它是遍历算法,复杂度是ON,因为redis是单线程,如果数据多的话会导致redis卡顿。 所以代替keys 阅读全文
posted @ 2019-09-16 10:59 勇闯8 阅读(1005) 评论(0) 推荐(0) 编辑
摘要: 限流 一个通用的限流接口就是一个用户只能在特定的时期内对于特定的行为只允许发生有限次。 可以简单的用redis的zset来实现这个功能,zset中的score就代表时间,用户每发起一次请求都维护一次zset,清理掉多余的任务,这里的value只需要保证唯一即可,所以选用毫秒时间戳。但是这个简单的限流 阅读全文
posted @ 2019-09-16 10:46 勇闯8 阅读(415) 评论(0) 推荐(0) 编辑
摘要: 分布式锁 多个系统要对一个key进行操作,最后操作key的顺序和预期的顺序不一致,此时就用分布式锁对一个目标加锁,使其他进程无法争到已经被占用的锁。 基本指令 加锁指令:setnx key value 移除锁指令:del key 但是如果在加锁后执行出现异常终止导致没有移除锁,就会导致死锁,所以要给 阅读全文
posted @ 2019-09-16 10:11 勇闯8 阅读(451) 评论(0) 推荐(0) 编辑
摘要: 集群 节点 启动集群 一个集群由多个节点组成,在刚开始的时候各个节点都是相互独立的,我们先以集群模式开启客户端: redis-cli -c -h <host> -p <port> 然后执行下列命令就可以查看集群中的所有节点: cluster nodes 可以看到目前集群只包含自己一个节点,在连接构建 阅读全文
posted @ 2019-09-16 09:52 勇闯8 阅读(508) 评论(0) 推荐(0) 编辑
摘要: 两种redis集群解决方案:codis和cluster 1、Codis codis是一个代理中间件,当客户端向codis发送指令时,codis负责将指令转发到后面的redis来执行,并将结果返回给客户端。 一个codis实例可以连接多个redis实例,也可以启动多个codis实例来支撑,每个codi 阅读全文
posted @ 2019-09-16 09:39 勇闯8 阅读(13721) 评论(0) 推荐(1) 编辑