redis
Erick_Lv
菜鸡互啄
展开
-
redis缓存雪崩、缓存穿透和缓存击穿等总结
redis作为缓存互联网高并发请求数据的情况,可能出现频繁访问MySQL的情况,但是MySQL由于自身的特性,可能无法抗住这么大的压力,因此我们想利用redis存储一些MySQL中的数据,redis作为缓存时,一般有以下几个场景:数据的一致性不是强制的比如查询UV的次数,允许和数据库有一些不一致,更新redis是异步的。而像支付等,是强一致性的,则不能使用缓存(只是举个例子),redis更...原创 2020-02-23 22:49:07 · 572 阅读 · 0 评论 -
redis笔记6 拓展内容
集群情况下的分布式锁集群情况下,redis的分布式锁有不安全的因素,下面这个场景:主节点拥有锁客户端获取锁后,主节点挂掉从节点接替,成为主节点,但是从节点没有客户端获取的锁新来的客户端向现在的主节点获取锁,会成功,导致出现数据竞争RedLock算法可以解决该问题,该算法基本的思想是,加锁时向过半节点发送set(key, value, nx=True, ex=xxx)指令,只要半数节...原创 2019-11-21 10:11:24 · 120 阅读 · 0 评论 -
redis笔记5 stream消息队列
基础Stream结构相当于一个消息队列。消息是存储在磁盘上的,而且是链式结构。每个stream都有自己的唯名称,是redis的key。stream在集群情况下,也是异步复制的。每个stream上可以有多个消费组,每个消费组都可以有自己的游标last_delivered_id在Stream上往前移动,表示当前消费组消费到了那条消息。消费组有Stream内的唯一的名称,使用xgroup_crea...原创 2019-11-21 10:10:19 · 947 阅读 · 1 评论 -
reids笔记4 集群
主从机制CAP原理:Consistent:一致性Availability:可用性Partition tolerance:分区容忍性网络分区:分布式节点网络断开的场景。CAP基本原理是:当网络分区发生时,不能同时保证一致性和可用性。redis支持主从同步和从从同步:replicatereplicatereplicatereplicatemasterslaveslaveslave...原创 2019-11-21 10:08:40 · 165 阅读 · 0 评论 -
redis笔记3 持久化、管道、事务、发布订阅和内存回收
I/O模型目前的redis都是单线程的,因此O(N)O(N)O(N)复杂度的操作很容易阻塞线程。redis采用epoll机制来实现I/O复用。redis为每个客户端保留了一个指令队列,客户端的指令通过队列来排队进行顺序处理,FIFS(first in first server)先到先服务。同样的,redis也为每个客户端关联一个相应队列,redis服务器通过响应队列,把指令的回复结果返回给客户...原创 2019-11-21 10:07:34 · 192 阅读 · 0 评论 -
redis笔记2 限流、GeoHash和Scan
限流简单限流简单限流的思路是,在规定的时间窗口内,给出规定的最大操作数量限制。使用zset结构作为一个用户行为的记录。zset的value和score都用来表示操作的时间戳。每次操作前,先把操作时间戳加入zset结构,然后移除超时的操作时间戳;之后比较总的个数和最大个数的关系,用来表示是否可以操作。import timeimport redisclient = redis.Strict...原创 2019-11-21 10:05:35 · 171 阅读 · 0 评论 -
redis笔记1---基础
基础数据结构redis的所有操作都是原子的,这得益于redis是单线程的结构。redis有5种基本的数据结构,分别是:string:字符串k-v:键值对list:链表hash:哈希set:集合zset:有序集合string是动态字符串,通过预分配空间减少内存的频繁分配操作,string在长度小于1M时,是成倍的增加现有空间;超过1M时,每次增加1M的空间,最大长度512MB。...原创 2019-11-21 10:03:54 · 170 阅读 · 0 评论