redis和memcache区别_redis和数据库的区别

2022-11-19 17:10:21 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

1 redis做存储,可以持久化,memcache做缓存,数据易丢失。

2 redis支持多数据类型,memcache存放字符串。

3 redis服务端仅支持单进程、单线程访问,也就是先来后到的串行模式,避免线程上下文切换,自然也就保证数据操作的原子性。Memcache服务端是支持多线程访问的。

4 redis虽然是单进程单线程模式,但是redis使用了IO多路复用技术做到一个线程可以处理很多个请求来保证高性能。

Redis的主从复制

1 在Slave启动并连接到Master之后,它将主动发送一个SYNC命令给Master。

2 Master在收到SYNC命令之后,将执行BGSAVE命令执行后台存盘进程(rdb快照), 同时收集所有接收到的修改数据集的命令即写命令到缓冲区,在后台存盘进程执行完毕后,Master将传送整个数据库文件到Slave。

3 Slave在接收到数据库文件数据之后,将自身内存清空,加载rdb文件到内存中完成一次完全同步。

4 接着,Master继续将所有已经收集到缓冲区的修改命令,和新的修改命令依次传送给Slaves

5 Slave将在本地执行这些数据修改命令,从而达到最终的数据同步

6 之后Master和Slave之间会不断通过异步方式进行命令的同步,从而保证数据的实时同步

7 如果Master和Slave之间的链接出现断连现象,Slave可以自动重连Master

Redis的主从复制阻塞模式

1 同一个Master服务可以同步n多个Slave服务

2 Slave节点同样可以接受其它Slave节点的连接和同步服务请求,分担Master节点的同步压力

3 Master是以非阻塞方式为Slave提供同步服务,所以主从复制期间Master一样可以提供读写请求。

4 Slave同样是以非阻塞的方式完成数据同步

Redis哨兵主要功能

(1)集群监控:负责监控Redis master和slave进程是否正常工作

(2)消息通知:如果某个Redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员

(3)故障转移:如果master node挂掉了,会自动转移到slave node上

(4)配置中心:如果故障转移发生了,通知client客户端新的master地址

Redis高并发和快速的原因

1.redis是基于内存的,内存的读写速度非常快;

2.redis是单线程的,省去了很多上下文切换线程的时间;

3.redis使用多路复用技术,可以处理并发的连接。

缓存雪崩

如果缓存集中在一段时间内失效,发生大量的缓存穿透,所有的查询都落在数据库上,造成了缓存雪崩。

解决办法:

没有完美的解决方案,可以通过随机算法让失效时间随机分布,避免同一时刻失效。

缓存穿透

访问一个不存在的key,缓存不起作用,请求会穿透到DB,可能DB也没查到,流量大时DB会挂掉。

解决办法:

1.采用布隆过滤器,使用一个足够大的bitmap,用于存储可能访问的key,不存在的key直接被过滤;

2访问key未在DB查询到值,也将空值写进缓存,但可以设置较短过期时间。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/200789.html原文链接:https://javaforall.cn

0 人点赞