数据库与中间件

1、Redis常见数据类型

五种常见数据类型:

String:字符串,单个对象或JSON、计数器、分布式锁;

Hash:哈希表,键值对,缓存对象;

List:列表,消息队列,可以头插和尾插;

Set:集合,去重且无序,名单、集合运算场景;

ZSet:有序集合,去重,排行榜等有序信息;

四种新增数据类型:

Bitmap:二值状态,标记用户签到或者登录;

HyperLogLog:海量UV去重;

GEO:地理信息相关;

Stream:消息队列,唯一ID;

2、Redis线程模型

Redis 6.0之前,使用单线程,但是不是说整个Redis都是单线程,而是说Redis接收请求、解析请求、读写数据、响应请求的过程是单线程,采用的是IO多路复用的方式进行监听,如果涉及耗时的后台操作,比如释放文件、释放内存、刷盘操作,还是有后台线程进行处理。

Redis 6.0之后,引入多线程,用来处理网络I/O,但是执行命令仍然是单线程。

3、Redis缓存穿透、缓存击穿、缓存雪崩的区别及解决方法?

缓存穿透:用户访问的数据,缓存不存在,数据库也不存在,当大量类似的请求访问时,会把流量全打到数据库上,导致数据库压力骤增。比如,用户构造大量类似id = -1(不存在的id)访问数据库,导致数据库压力倍增。可以用布隆过滤器解决。

缓存击穿:某个时间,某个热点的key在缓存失效了,或者Redis宕机,导致大量流量打到数据库上面。可以用分布式锁/互斥锁、缓存预热。

缓存雪崩:同一时间,大量key失效,导致大量请求打到数据库。缓存击穿可以看成是缓存雪崩的子集,可以使用随机TTL、多级缓存等方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值