Redis问题

1.Redis是什么?

Redis是C语言编写的基于内存的高速缓存的非关系型数据库,它以key-value形式存储数据,支持的数据类型也十分丰富。

2.Redis支持的数据类型有哪些?

String,List,Hash,Set,Sorted Set等。

3.Redis的使用场景有哪些?

1.热点数据缓存---String

2.排行榜---ZSet

3.计时器

4.实现不同服务器之间的seesion共享

5.设置分布式锁

4.Redis为什么是单线程的?

Redis是基于内存缓存数据,cpu不会成为Redis的性能瓶颈,影响Redis的大可能是机器内存的大小和网络带宽,既然cpu不会成为Redis的性能瓶颈且单线程容易实现,那么就顺理成章地采用单线程方案了。

5.Redis一直是单线程的吗?

也不是,比如--bgsave--会fork出一个子线程。

6.Redis持久化有几种方式?

RDB

AOF

7.什么是缓存穿透?怎么解决?

当查询数据即不在缓存也不在数据库中,这时有大量请求恶意访问该数据,造成数据库压力过大的现象就是缓存穿透。

该现象有以下情形:

        1.查询id不合法(负数、小数等)

        2.数据库确实不存在该数据

解决方案:

        1.针对查询id不合法,可以在controller层增加id校验,对于id不合法的查询直接返回

        2.针对数据库确实不存在该数据的情形,可以在缓存中增加一个空对象,且设置布隆过滤器

8.怎么保证缓存数据和数据库数据的一致性?

1.合理设置缓存数据的过期时间

2.增加、删除、修改数据之前删除缓存数据

9.什么是缓存雪崩?怎么解决?

当缓存服务器重启或缓存中大量数据即将过期,这时有大量请求访问这些数据,造成数据库压力过大,这种现象就是缓存雪崩。

该现象有以下情形:

        1.项目刚刚上线

        2.Redis服务宕机

        3.缓存中大量数据即将过期

解决方案:

        1.提前预热数据

        2.Redis服务集群化模式

        3.分散设置过期时间

10.Redis怎么实现分布式锁?

使用Redis命令setnx--占锁  在业务代码执行完毕之后释放锁--del

11.Redis实现分布式锁有什么缺陷?

超时问题:业务代码未执行完毕之前锁失效,会出现失锁问题

解决方案:通过WatchDog实现锁自动延长过期时间,引入第三方Redission

12.Redis淘汰策略有哪些?

1.从设置过期时间的数据集中淘汰最近最少使用的数据

2.从设置过期时间的数据集中淘汰即将过期的数据

3.从设置过期时间的数据集中随机淘汰数据

4.从数据集中淘汰最近最少使用的数据

5.从数据集中随机淘汰数据

6.禁止驱逐任何数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值