服务态度 专业的网站建设,wordpress开发文档,解答网站内容优化策略,微信网站域名一.分布式数据库的含义 分布式数据库缓存指的是在高并发的环境下#xff0c;为了减轻数据库的压力和提高系统响应时间#xff0c;在数据库系统和应用系统之间增加一个独立缓存系统。
二.常见的缓存技术 #xff08;1#xff09;MemCache: Memcache是一个高性能的分布式的内…一.分布式数据库的含义 分布式数据库缓存指的是在高并发的环境下为了减轻数据库的压力和提高系统响应时间在数据库系统和应用系统之间增加一个独立缓存系统。
二.常见的缓存技术 1MemCache: Memcache是一个高性能的分布式的内存对象缓存系统用于动态Web应用以减轻数据库负载。Memcache在内存里维护一个统一的巨大的hash表数据存在该hash表中。 2Redis: Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、KeyValue数据库 (支持多种数据结构如key-value、string、set、list等)并提供多种语言的API。 3Squid:Squid是一个高性能的代理缓存服务器Squid支持FTP、gopher、HTTPS和HTTP协议。
三.Memcache与Redis的对比 四.Redis分布式存储的常见方案
1、主从模式 (Master/Slavel)一机多从故障时手动切换
2、哨兵模式 (Sentinel)有哨兵的一主多从主节点故障自动选择新的节点
3、集群模式(Cluster)分界点对等集群分slots不同的slots的信息存储到不同的节点
五.Redis集群切片的常见方式
1、客户端分片即在客户端通过key的hash值对应到不同的服务器。
2、中间件实现分片在应用软件和Redis中间例如: Twemproxy、Codis等由中间件实现服务到后台Redis节点的路由分派.
3、客户端服务端协作分片Redis Cluster模式客户端可采用一致性哈希服务端提供节点的重定向服务slot上。不同的slot对应到不同服务器。
六.Redis的分片方案
1、范围分片按照数据范围来分片
2、哈希分片通过Key进行hash运算分片可以将数据比较均匀地分配到每一个结点类似取余操作。
3、一致性哈希分片哈希分片的改进把存储节点和需要存储的数据放在一个hash环上数据根据hash值在hash环上按照顺时针方向找到对应的结点
七.Redis和数据库之间数据同步方案一致性
1、读取数据时先读取redis中的数据如果redis没有则从原数据库中读取并同步更新redis中的数据。写回时写入到原数据库中并同步更新到redis中
2、异步队列方式实现同步可采用消息中间件处理
3、通过数据库插件完成数据同步
4、利用触发器进行缓存同步
八.Redis的数据淘汰算法
1、不淘汰noeviction当空间不足时就报错是系统的默认淘汰策略。
2、设置过期时间的键空间 2.1、volatile-random随机移除某个key 2.2、volatile-lru:移除最近没有使用的 2.3、volatile-ttlttl值小的key优先淘汰
3、全键空间 3.1、allkey-random随机移除某个key 3.2、allkey-lru移除最近没有使用的
九.Redis的持久化
1、AOF日志思路把每条操作命令追加到AOF文件尾部一旦有问题可以重新执行AOF文件中的命令
2、RDB快照指定时间间隔将数据进行快照存储 十.Redis常见问题
1、缓存雪崩
定义大部分缓存失效导致请求往数据库发送导致数据库奔溃
解决方案
使用锁或队列使用排他锁或者队列方式保证不会有大量线程对数据库一次性进行读写避免缓存雪崩时大量并发请求落到底层存储系统上为key设置不同的缓存失效时间固定失效时间随机失效时间二级缓存设置两个缓存有时间限制无时间限制避免大规模访问数据库导致缓存雪崩
2、缓存穿透
定义查询无数据返回导致直接插数据库查询一个数据时优先在缓存中寻找如果缓存中没有就去数据库中寻找但如果数据库中也没有就会返回一个空值但是如果后面还要查找这个数据就会频繁地重复以上步骤这就违背了当初设置缓存的作用
解决方案
第一次查询结果为空时设置一个默认值存放到缓存第二次再查到缓存里就有值了。在设置一个5分钟的过期时间以便正常更新缓存设置布隆过滤器将所有可能存在的数据hash到一个足够大的bitmap中一个不存在的数据会被bitmap拦截掉从而避免了对底层数据库的查询压力 3、缓存预热