- 博客(10)
- 收藏
- 关注
原创 Redis面试问题之Redis为什么这么快
I/O多路复用就是一个线程来处理多个socket,并在某个socket可读,可写的时候得到通知,从而避免的无效的等待,充分利用了cpu资源。目前I/O多路复用是都是采用epoll模式来实现的,它会在通知用户进程socket就绪的同时,把已就绪的socket写入用户空间,不需要挨个遍历socket来判断是否就绪,提升了性能。2.Redis多路复用的原理。
2023-09-19 14:55:28 60
原创 Redis面试问题之集群
分片集群解决的问题主要是,海量数据的存储问题,集群中有多个master,每个master保存不同的数据,并且还可以给每个master配置多个从节点,就可以增强高并发的能力,同时每个master之间可以互相ping来测试心跳,就类似于哨兵的模式。Redis集群引用了哈希槽的概念,有16384个哈希槽,集群中每个主节点绑定了一定范围内的哈希槽,key可以通过CRC16校验后对16384个哈希槽进行取模来决定放到哪个哈希槽,找到相应的哈希槽进行存储,取值逻辑是一样的。
2023-09-18 16:28:28 61
原创 Redis面试哨兵模式
集群脑裂:是因为slave节点,master节点和哨兵集群处于不同的网络分区,导致哨兵集群无法感应到主节点的呼吸情况,判断主节点挂掉,就会将slave节点升级为master节点,这样就会出现俩个主节点,就像大脑分裂了一样,如果客服端还向master节点继续输入数据,就会输入到原来的master之中,当网络问题解决之后,就会将原来的master降至为slave节点,然后进行主从数据同步,就会导致数据的丢失问题。单点不超过10g内存,如果redis内存不够,就可以给服务独立分配redis的主从节点。
2023-09-18 15:53:15 74
原创 Redis面试题 主从复制
单节点的redis的并发能力是有限的,通常我们需要开启多个redis来配置主从复制,主节点用来写入数据,从节点用来读取数据。
2023-09-18 14:51:02 82
原创 缓存三兄弟(缓存穿透,缓存击穿,缓存雪崩)
加锁:在缓存失效时,通过加锁机制保证只有一个请求能够进入后端存储系统获取,其他的请求只能等待那个线程释放锁之后才能访问,当从数据库中获取到数据之后将数据缓存到key中的value,然后释放锁,其他的线程就可以访问缓存中的数据了。缓存穿透是指在使用缓存系统的时候,大量的查询请求访问不存在于缓存的数据,导致这些请求都直接访问后端数据库或者其他的存储系统,从而增加了系统的负载和响应的时间。布隆过滤器:用于快速的过滤掉请求的数据不在缓存中的数据,可以快速的过滤掉一部分。不存在于缓存中的查询。
2023-09-13 17:07:44 147 1
原创 Redis 主从复制(详解)
所有的写操作都是在master上面操作,然后同步更新到slave中,所以从master同步到slave机器有一定的延迟,当系统繁忙的时候,slave机器数量的增加也会使得这个问题严重。挂了系统就会崩溃,数据保存不到redis中。
2023-08-31 16:57:18 103
原创 Redis 管道(详解)
Redis客户端和服务器之间使用的是TCP网络传输协议,所以无论发送请求还是接受响应必须经过网络传输,在tcp连接过程中,客户端和服务端是阻塞的一问一答的通信,一问一答中间会产生RTT(Round Time Trip),而且还频繁的调用IO,同时需要redis调用read()和write()系统方法,系统方法会将数据从用户态转移到内核态,这样会对进程上下文造成很大的性能影响。服务端依次处理完之后,通过一条响应将结果返回,通过减少redis和客户端通信次数来降低往返延时时间。
2023-08-28 18:00:01 239 1
原创 Redis 事务(详解)
如果事务开启,command不会被立即执行,而是排入队列,并返回排队状态(具体依赖于客户端(例如:spring-data-redis)自身实现)。因为incr 是给数字增加的,而name键是个字符串,自然会失败,但是输入命令的时候没有检测到错误,因为机器不会给你去检测name是否为数字类型。如果没有开启事务,command将会被立即执行并返回执行结果,并且直接写入磁盘。就是变成一个队列,在队列中,一次性、顺序的执行一系列的操作命令。先用multi开启事务,然后中间写一堆堆的命令,然后用exec触发执行。
2023-08-27 19:02:10 108 1
原创 MySQL 主从复制教学
然后I/O线程会得到主库中的binlog,就是从库会将得到的binlog写入到relay-log(中继日志)之中,中继日志也就是存储数据更新信息的地方,然后SQL线程会读取relay-log中的binlog日志信息,全部解析成mysql语句,然后逐一执行。主从复制主要是三个线程 SQL,master和slave线程,当主数据库执行增删改查的命令时候,会生成一个dump线程去通知从库,说我们主库发生改变啦,你也赶快同步数据库勒,这也是为什么主库要开启bin-log日志的原因。图是从黎社博主上复制过来的。
2023-08-18 16:20:00 56 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人