redis数据库

redis支持的数据类型

String
hash
list
set:无序集合
zset:有序集合

什么是redis的持久化,持久化方式有哪些?优缺点分别是什么?

持久化就是将数据写到磁盘中,防止redis宕机导致数据丢失。

持久化方式有,rdb和aof
rdb是redis Date Base缩写
主要方法有rdbSave(生成rdb文件)和rdbload(加载数据)

aof:日志存储
每当服务器执行时,函数flushAppendOnlyFile就会调用

存储结构

内容是redis通讯协议格式的命令文本存储(resp)

比较:
aof文件比edb更新频率高,优先使用aof还原数据;
aof比rdb更安全也更大;
rdb性能比aof好;
如果两个都配置了优先加载aof

redis有哪些架构模式?讲讲各自的特点

单机版:
特点:简单
问题:
内存容量有限
处理能力有限
无法高可用

主从复制:
redis的复制功能 允许用户根据一个redis服务器来创建任意多个服务器的复制品,其中被复制的服务器为主服务器,而通过复制创建出来的服务器复制品则为从服务器。只要主从服务器之间的网络连接正常,主从服务器两者会具有相同的数据,主服务器就会一直将发生在自己身上的数据更新同步给从服务器,从而一直保证主从服务器的数据相同

特点:
master/slave 主从服务器
master/slave 数据相同
降低master读压力在转交给从库

问题:
无法保证高可用
没有解决主服务器写的压力

哨兵

redis中哨兵的主要作用就是监控与提醒;
哨兵会定时给reids主服务器发送消息,然后主服务会回一个消息,这个操作是来保证主服务器是在运行中的,当主服务器宕机了,这个哨兵收不到主服务器的消息,就知道主服务器挂掉了,就会通知一台从服务器开启,保证了数据不会大量丢失;
主从模式切换需要时间,这个时间内数据不能被加载;

集群(直连型)

从redis3.0之后版本支持redis-cluster集群,redis-cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。
特点:
无中心架构,不存在哪个节点影响了性能
数据按照slot存储分布在多个节点,节点之间数据共享,可动态调整数据分布
可扩展,可线性扩展到1000个节点
高可用,部分节点不可用时,集群仍可用,通过增加slave做备份数据副本
实现故障自动failover,通过投票机制完成slave到master角色的转换

缺点:
资源隔离性较差,容易出现相互影响的情况;
数据通过异步复制,不保证数据的强一致性;

Redis分布锁,怎么实现?

先拿sernx来争抢锁,抢到之后,再用expire给锁加一个过期时间,防止锁忘记了释放;

什么是缓存穿透,如何避免

一般的缓存系统,都是按照key去缓存查询,如果不存在对应的key,就应该去后端数据库中查找,一般恶意的请求都会故意查询不存在的key,而且请求量很大,当过多的请求访问到了数据库,就会导致数据库崩溃,这就叫做缓存穿透;
如何避免:
1、对查询结果为空的情况也进行缓存,缓存时间设置短一点,或者该key对应的数据insert之后情况缓存;
2、对一定不存在的数据进行过滤,可以把所有可能存在的key放到一个大的bitmap中,查询时通过该bitmap进行过滤;

什么是缓存雪崩,如何避免?

当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也是会访问后端服务器,这时对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。

1:在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。比如对某个key只允许一个线程查询数据和写缓存,其他线程等待。

2:做二级缓存,A1为原始缓存,A2为拷贝缓存,A1失效时,可以访问A2,A1缓存失效时间设置为短期,A2设置为长期

3:不同的key,设置不同的过期时间,让缓存失效的时间点尽量均匀。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值