redis整理-kw

缓存有哪些分类
本地缓存:进程中的缓存;
分布式缓存:(分布式,理解为,多个模块,共同组成一个系统,不一定在或者不在同台服务器上)
多级缓存:两者结合

redis是什么?
redis是一个内存中的存储系统,可以用做缓存、数据库和消息中间件

redis支持的数据类型有哪些?
key只能为String
value可以是:
总共有8种
5种比较常见的String、Hash、List(有序链表)、Set、sorted set(有序集合)
加上BitMap、hyperloglogs(是用来做基数统计的算法)、geospatial(地理空间相关的)

Redis为什么快
基于内存快是有对比的,我们说的快是和数据库对比,数据库持久化是在磁盘中的,Redis是直接运行在内存中的。
数据结构简单
采用单线程避免了上下文切换和加锁和释放锁
多路复用I/O,非阻塞式IO
//备注:上下文切换:指的是内核(操作系统的核心)在CPU上对进程或者线程进行切换

redis的持久化方式RDB和AOF的区别
RDB:指在指定的时间间隔内将内存中的数据集快照写入磁盘
AOF:以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。

比较:
aof文件比rdb更新频率高,优先使用aof还原数据。
aof比rdb更安全也更大
rdb性能比aof好

用过Redis做分布式锁吗?
怎么实现的
用set操作来争抢锁,获取锁后需expire一个过期时间,防止忘记释放,之后才进行程序的处理。
如果在setnx之后执行expire之前进程意外crash或者要重启维护了,那会怎么样?
set操作时,可以加上时间参数,相当于一条指令。

什么是缓存穿透?如何避免?
缓存穿透:我的理解:
缓存穿透,通常是在没有做空值缓存的时候造成的,就是在缓存中查寻数据时,一个key不存在,会去请求数据库,数据库中有没有相应数据,并且不会进行空值缓存。导致,请求这个key时,那么都会直接请求到数据库中,对数据库造成压力。

如何避免?
1:空值缓存查询结果为空的情况也进行缓存;
2:对一定不存在的key进行过滤。可以使用布隆过滤器把所有的可能存在的key放到一个大的Bitmap中,查询时通过该bitmap过滤。

什么是缓存击穿?
缓存击穿:通常是和热点key相关,在缓存中,一个热点key扛着非常大的并发,但在某一时刻这个key过期了。此时大量并发请求全部打到,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。
如何避免
1、热点数据永不过期,只更新不过期。
2、互斥锁;
使用互斥锁,就是在缓存失效的时候(判断拿出来的值为空),不是立即去load db,而是先使用缓存工具的某些带成功操作返回值的操作(比如Redis的SETNX或者Memcache的ADD)去set一个mutex key,当操作返回成功时,再进行load db的操作并回设缓存;否则,就重试整个get缓存的方法

什么是缓存雪崩?何如避免?
缓存雪崩:当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也会给后端系统(比如DB)带来很大压力。
何如避免?
1、设置不同的过期时间;

Redis相比memcached有哪些优势
memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型
redis可以持久化其数据

redis的并发竞争问题如何解决?
redis是单线程的,并发的请求,对资源进行写操作时,可以使用互斥锁,拿到锁后才进行操作。
单机情况下:用互斥锁
集群情况下:用分布式锁

使用redis做过异步队列吗?怎么用的

为什么Java内部有缓存了(例如HashMap就能达到类似效果),还要使用redis?
用Map实现的是本地缓存。
用redis可以实现分布式缓存。
原因:
Map比较简单,他的设计并不是专门用来做缓存的。
用redis可以实现分布式的缓存
可以持久化
过期机制
redis可以分配很多硬盘空间

RDB和AOF
RDB
redis DataBase
内存中的数据集快照写入磁盘

AOF
Append Only File
AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值