非关系性数据库(个人学习总结)

非关系性数据库

redis使用场景?
用户登录信息缓存,页面防止重复提交,分布式锁,统计日活,布隆过滤器。

redis最高并发(性能测试)?

为什么redis是单线程模型,居然能支持这么高的并发?底层实现是怎样的?
NIO多路复用,epoll模式,windows不支持epoll,只支持select,所以redis官网不支持windows。
redis与数据库的数据一致性问题?
插入数据的时候:
1.先增/删/改redis,如果增/删/改数据库出现问题,又没有回滚,就会出现缓存与数据库数据不一致场景。可以通过缓存数据设置较短的过期时间完成(但是存在问题)。
解决方案1:通过缓存设置较短的过期时间,解决这个问题。

2.脏数据场景:删除了redis数据,正在删除数据库的数据,这个时候查询请求来了,从redis中没有查询到数据,就查询数据库,查询到了,更新redis。问题出现了!
解决方案2:可以先增,删,改数据库,mysql如果有增,删,改发布MQ消息,redis订阅,异步更新缓存(canal)。

Redis缓存满了如何淘汰(6种)?
noeviction(默认策略):对于写请求不再提供服务,直接返回错误(DEL请求和部分特殊请求除外)
allkeys-lru:最久未使用的对象将其淘汰.
volatile-lru:从设置了过期时间的key中使用LRU算法进行淘汰
allkeys-random:从所有key中随机淘汰数据
volatile-random:从设置了过期时间的key中随机淘汰
volatile-ttl:在设置了过期时间的key中,根据key的过期时间进行淘汰,越早过期的越优先被淘汰
Redis的缓存穿透,缓存击穿,缓存雪崩的概念是什么?如何解决上述问题?
缓存穿透(拉通都没有找到值):一直获取在Redis中未找到,在mysql中未找到。导致mysql崩溃。
缓存击穿(某一个点):缓存没有找到某个值(缓存KEY过期),在数据库中找到了(在某个时间片大量请求怼入数据库),导致mysql崩溃。
缓存雪崩:缓存突然宕机了,缓存满了没有淘汰,导致缓存服务器不可用,大量的请求打到数据库。
1.解决缓存穿透问题:布隆过滤器(分布式去重),提前把KEY存入布隆过滤器,然后根据请求,如果值不存在与布隆过滤器中,则不处理这个请求,获取报错。google的guava工具包。
2.解决缓存击穿问题:将系统中key的缓存失效时间均匀地错开,防止统一时间点有大量的key对应的缓存失效;
3.解决缓存雪崩问题:
1). 集群使用Cluster多主,不至于所有的master都挂掉吧!
2). 服务熔断降级。
3). redis隔离。

Redis如何持久化数据?
RDB:fork子进程以二进制流的形式实现持久化操作(bgsave模式),全量持久化,异常退出无法恢复Redis缓存周期内的数据。
AOF:增量持久化,针对RESP协议的指令数据进行持久化。先保存到缓冲区(1秒钟),通过.append方式追加到已有的AOF文件中。
AOF重写:针对超过了auto-aof-rewrite-min-size的新增加数据合并吧(set,delete这条数据,我们不会持久化这条数据。)

redis常用的集群有哪些?如何实现高可用(哨兵,cluster)?
哨兵:单独的哨兵进程,监控各个节点的状态,如果master宕机,自动拉起一个slave,通过发布订阅模式通知各个slave更新配置。
Cluster:我们采用的是多主多从(一主配一从)形式搭建。通过均匀分配16384 slot(槽)完成集群。 我们保存数据的时候,需要Hash后取余,得到一个在0-16383范围内的槽,然后通过匹配槽确定保存在哪个主节点上面。

Cluster多主节点间数据如何同步?(有点复杂)

redis的五种数据类型?分别说一下使用场景。
String,List,Hash,Set,ZSet
mongodb世面上资料较少,存储document (文档)对象,其实就是json,mongodb有不同于关系性数据库的查询语句,叫什么?

mongodb怎么支持事物的?

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值