当前位置:   article > 正文

【Java面试八股文系列】面试八股文之Redis_java面试八股文 redis

java面试八股文 redis

面试八股文之Redis

Redis存储类型

问:项目中使用Redis主要来做什么?

答:主要是用来做缓存和分布式锁。

问:那Redis的存储类型和底层原理是怎样的?

答:Redis主要有String、Set、Hash、List、Sort Set;项目中还是以String使用场景居多。

问:讲讲Set的底层存储结构是怎样的?

答:没答上来,后补。

Redis分布式锁

问:请你设计个Redis的分布式锁?

答:通过LUA脚本设置一个Key,或者在Redis3.0之后使用setnx。并对这个key设置过期时间。

问:为什么要使用LUA脚本?

答:保证原子性,避免同时多个线程set或者设置过期时间错误。

问:如果一个线程在过期时间内没有执行完,这个锁被自动释放了怎么办?

答:开启一个监控线程,watch dog监控线程运行状态,进行锁续命。

问:那释放锁有什么要注意的吗?

答:释放锁只能有加锁的线程去释放,防止锁被误删除。

问:那如何识别到是改线程加的锁呢?

答:可以使用线程名作为value,释放前比对value值。

问:那分布式情况下如果线程名相同怎么吧?

答:可以使用线程名加分布式ID(雪花算法)来命名。

问:分布式情况下,高并发的写操作,会造成多台机器中的线程共同持有锁吗?

答:可能会,但是Redis使用了RedLock(红锁)的方式来尽量避免这种情况,但仍然存在多线程持有锁的情况。如果要保证100%的但线程持有锁的话,可以使用MySQL做分布式锁。

Redis持久化

问:知道Redis的持久化机制吗?

答:redis持久化目的:为了避免进程退出导致数据的永久丢失;持久化的方式分为RDB和AOF。img

Redis的部署方式

问:Redis的部署方式有哪几种?

答:主从,哨兵和集群。

问:你们公司(项目)使用的是那种部署方式?优缺点是什么?

答:采用的集群部署方式。

终极一问

问:除了redis还有什么其他的分布式锁方案?

答:…

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/474032
推荐阅读
相关标签
  

闽ICP备14008679号