热点复习题

为什么要用redis?一般在什么场景下用到?

答:redis是最常用的缓存高并发,提高高可用能力的手段,能有效的提升服务器的性能,引入redis可以为数据库减压,让很多本应该打到DB上的请求被缓存拦截处理掉。应用场景:如秒杀扣库存。


redis的特点有啥?

答:1.redis的读写能力突出,读的速度可达每秒十一万次,写的速度高达每秒八万一千次;

        2.支持持久化,支持AOF和RDB两种持久化方式;

        3.支持事务,redis所有操作都是原子性的,同时redis也支持几个操作后合并的原子性执行;

        4.数据结构丰富,有八种数据类型,常用5种String、hash、set、sotrset、list;

        5.支持主从复制,主机可将数据同步到从机,支持读写分离;

        6.支持大量集群节点;


redis如何持久化数据?怎样防止异常时数据丢失?

答:RDB(快照)

        将某个时间点的所有数据生成快照放在磁盘上,当数据量很大是很慢;

        可以将快照复制到其他服务器上,从而生成服务器副本;

        如果服务器异常,将会丢失最后一次快照之后的数据;

        AOF(及时更新)

        将写命令添加到Aof文件的末尾,使用AOF持久化需要设置同步选项,从而确保同步到磁盘文件上的时机。这是因为,对文件的先写入并不是马上同步到磁盘上,而是先存入缓存,再同步到磁盘上。同步频率的选项有,always每个写命令都同步,everysec每秒同步一次,no让操作系统自己决定。通常情况下使用everysec,当服务器异常时只丢失一秒的数据,而且redis每秒写一次并不对对性能有影响。


为什么redis是单线程的?

答:因为redis的瓶颈不是CPU的运行速度,而往往是网络带宽和机器的内存的大小,单线程内存开销小,容易实现,同时也避免了多线程的很多坑。


什么是缓存穿透、缓存击穿、和缓存雪崩?有什么解决缓存击穿的办法?

缓存穿透:指缓存和数据库中都没有数据了,请求打到了数据库上,数据库还查不到数据,数据库请求被打满,造成服务阻塞,造成线上服务不可用。

缓存击穿:缓存中没有但是数据库中有数据(热点缓存数据到期),这时由于并发用户特别多,同时读缓存没有读到数据,然后又同时查数据库,造成数据库瞬间压力过大,线上系统卡住。

缓存雪崩:缓存同一时间大面积失效,升级版的缓存击穿。

解决缓存击穿的办法:

1.对热点数据表设置成前多少条(top1000)永久不过期,然后对此表进行定时更新,

2.互斥锁,多个线程同时去查数据库的这条数据,我们可以在第一个请求上加互斥锁锁住他,当其他请求走到这拿不到锁就无法请求,等第一条数据返回数据,缓存内有数据了,其他请求就走缓存了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值