Java架构师技能点面试题汇总redis面试题及答案

  1. Redis有哪些数据结构?

  2. 使用过Redis分布式锁么,它是什么回事?

  3. 假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如果将它们全部找出来?

  4. 如果这个redis正在给线上的业务提供服务,那使用keys指令会有什么问题?

  5. 使用过Redis做异步队列么,你是怎么用的?

  6. 如果对方追问redis如何实现延时队列?

  7. 如果有大量的key需要设置同一时间过期,一般需要注意什么

  8. Redis如何做持久化的?

  9. Pipeline有什么好处,为什么要用pipeline?

  10. Redis的同步机制了解么?

  11. 是否使用过Redis集群,集群的原理是什么?

  12. 使用redis有哪些好处?

  13. redis相比memcached有哪些优势?

  14. Memcache与Redis的区别都有哪些?

  15. redis常见性能问题和解决方案:

  16. 为什么redis需要把所有数据放到内存中?

  17. Redis是单进程单线程的

  18. redis的并发竞争问题如何解决?

  19. redis事物的了解CAS(check-and-set 操作实现乐观锁 )?

  20. redis持久化的几种方式

  21. redis 最适合的场景

一、Redis有哪些数据结构?

1
2
字符串String、字典Hash、列表List、集合Set、有序集合SortedSet。
如果你是Redis中高级用户,还需要加上下面几种数据结构HyperLogLog、Geo、Pub/Sub。

二、使用过Redis分布式锁么,它是什么回事?

先拿setnx来争抢锁,抢到之后,再用expire给锁加一个过期时间防止锁忘记了释放。
这时候对方会告诉你说你回答得不错,然后接着问如果在setnx之后执行expire之前进程意外crash或者要重启维护了,那会怎么样?
这时候你要给予惊讶的反馈:唉,是喔,这个锁就永远得不到释放了。紧接着你需要抓一抓自己得脑袋,故作思考片刻,好像接下来的结果是你主动思考出来的,然后回答:我记得set指令有非常复杂的参数,这个应该是可以同时把setnx和expire合成一条指令来用的!对方这时会显露笑容,心里开始默念:摁,这小子还不错。
jedis.set(String key, String value, String nx, String expx, int time),这个set()方法一共有五个形参:

1
2
3
4
5
第一个为key,我们使用key来当锁,因为key是唯一的。
第二个为value,我们传的是requestId,很多童鞋可能不明白,有key作为锁不就够了吗,为什么还要用到value?
原因就是我们在上面讲到可靠性时,分布式锁要满足第四个条件解铃还须系铃人,通过给value赋值为requestId,我们就知道这把锁是哪个请求加的了,在解锁的时候就可以有依据。
requestId可以使用UUID.randomUUID().toString()方法生成。
第三个为nx,这个参数我们填的是NX,意思是SET IF NOT EXIST,即当key不存在时,我们进行set操作;若key已经存在,则不做任何操作;
第四个为expx,这个参数我们传的是PX,意思是我们要给这个key加一个过期的设置,具体时间由第五个参数决定。
第五个为time,与第四个参数相呼应,代表key的过期时间。

三、假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如果将它们全部找出来࿱

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值