Redis
文章平均质量分 59
鲁花菜籽油
这个作者很懒,什么都没留下…
展开
-
交换机Exchange的4种类型
directdirect交换机会将消息路由到binding key 和 routing key完全匹配的队列中。它是完全匹配、单播的模式。fanout所有发到 fanout 类型交换机的消息都会路由到所有与该交换机绑定的队列上去。fanout 类型转发消息是最快的。topictopic交换机使用routing key和binding key进行模糊匹配,匹配成功则将消息发送到相应的队列。routing key和binding key都是句点号“. ”分隔的字符串,binding key中可以存原创 2021-10-22 18:10:55 · 865 阅读 · 0 评论 -
缓存穿透、缓存击穿、缓存雪崩
缓存穿透 指查询一个一定不存在的数据,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,可能导致数据库挂掉。解决方案:1、查询返回的数据为空,仍把这个空结果进行缓存,但过期时间会比较短。2、布隆过滤器:将所有可能存在的数据哈希到一个足够大的 bitmap 中,一个一定不存在的数据会被这个 bitmap 拦截掉,从而避免了对数据库的查询。缓存击穿 对于设置了过期时间的 key,缓存在某个时间点过期的时候,恰好这时间点对这个 Key 有大量的并发请求过来,这原创 2021-10-22 10:41:11 · 115 阅读 · 0 评论 -
Redis单线程为什么需要加锁
首先需要说明一点的是:我们一直在强调 redis 是单线程,只是在处理我们的网络请求的时候只有一个线程来处理,一个正式的Redis Server运行的时候肯定是不止一个线程的。为什么redis是单线程的? 官方FAQ表示,因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了。为什么redis需要加锁? 我们需要注意的是:redis是单线程这是毋庸置疑的。red原创 2021-10-19 22:51:07 · 4538 阅读 · 2 评论 -
Redis的三种模式-主从复制、哨兵、Cluster
Redis单机版优点:单机版的Redis也有很多优点,比如实现简单、维护简单、部署简单、维护成本非常低,不需要其它额外的开支。缺点:单点故障问题。一个Redis挂了,所有的请求就会直接打在了DB上。并且一个Redis抗并发数量也是有限的,同时要兼顾读写两种请求,只要访问量一上来,Redis就受不了了。另一方面单机版Redis数据量存储也是有限的,数据量一大,再重启Redis的时候,就会非常的慢,所以局限性也是比较大的。主从模式 一个主数据库,多个从数据库。主数据库(master)可以原创 2021-09-17 10:15:34 · 334 阅读 · 0 评论 -
阻塞IO、非阻塞IO和多路复用IO
1、阻塞IO模型 最传统的一种IO模型,即在读写数据过程中会发生阻塞现象。 当用户线程发出IO请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线程就会处于阻塞状态,用户线程交出CPU。当数据就绪之后,内核会将数据拷贝到用户线程,并返回结果给用户线程,用户线程才解除block状态。 典型的阻塞IO模型的例子为:data = socket.read(); 如果数据没有就绪,就会一直阻塞在read方法。2、非阻塞IO模型 当用户线程发起一个read操作后,并不需转载 2020-07-20 23:00:59 · 3133 阅读 · 0 评论 -
Redis中的乐观锁和悲观锁
一、定义:悲观锁(Pessimistic Lock): 顾名思义,就是很悲观。每次获取数据的时候,都会担心数据被修改,所以每次获取数据的时候都会进行加锁,确保在自己使用的过程中数据不会被别人修改,使用完成后进行数据解锁。由于数据进行加锁,期间对该数据进行读写的其他线程都会进行等待。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁、表锁、读锁、写锁等。都是在操作之前先上锁让别人无法操作该数据。乐观锁(Optimistic Lock): 顾名思义,就是很乐观。每次获取数据的时候,都不会担心数据转载 2020-07-20 20:07:56 · 1994 阅读 · 0 评论