redis和memcache区别_redis和数据库的区别
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
相关文章
- 使用Redis之前,了解默认端口号(redis的默认端口)
- Redis实战:全面提升数据库性能(redis实战)
- Redis实现全局分布式锁实现(redis全局锁)
- 利用Redis进行内存数据库优化(redis内存数据库)
- 使用Redis轻松实现内存数据库存储(redis内存数据库)
- 微盟搭配Redis优惠抢券活动有礼多多(微盟 redis优惠券)
- 快速获取Redis数据库的时间戳(获取redis 的时间戳)
- Redis在哪些场景里大放异彩(简述redis适合的场景)
- 查询Redis数据库测量你的数据量(查询redis数据量)
- 探索Redis增强性能的连接之道(看redis 连接数)
- 探索Redis数据库容量大小(查看redis数据库容量)
- 测试Redis连接解码连接命令的智慧(测试redis连接命令)
- 实现数据库缓存同步的Redis方案(数据库缓存同步redis)
- 开启新时代数据库数据轻松加入Redis缓存(数据库数据写入redis)
- 让数据库内存表与Redis共舞(数据库内存表和redis)
- 一键搭建Redis轻松实现数据库高效存储(一键搭建redis)
- 深入理解Redis多线程技术(怎么理解redis多线程)
- 重新定义大文件存储Redis(大文件存redis)
- 善用Redis极大提升内存效率(redis默认使用内存)
- 用Redis实现高效的队列处理(redis高效队列处理)
- Redis集合实现版本控制(redis集合版本化)
- Redis中使用集合命令的技巧(redis 集合 命令)
- Redis极大开发效能的高性能数据库(redis都能做什么)
- Redis还是数据库谁更快(redis还是数据库快)
- 开启Redis调试之旅一款实用的调试工具(redis 调试工具)
- Redis订阅技术安全高效持续更新(redis订阅更新稳定吗)
- Redis解压版轻松使用指南(redis 解压版使用)