Java工程师该怎么面试 Redis问题及答案有哪些

Java工程师该怎么面试?Redis问题及答案有哪些?Redis是Nosql数据库,是一个高性能的key-value数据库,得到了很多企业的重视及应用,在Java工程师面试的过程中,企业也会重点考察求职者对Redis的掌握程度。下面就给大家分享一些常见的Redis面试题及答案,希望能够帮助小伙伴们顺利通过面试考验。

 

Java工程师该怎么面试 Redis问题及答案有哪些

 

 

1、Redis的特点是什么?

Redis的性能非常出色,每秒可以处理超过10万次读写操作,是已知性能最快的Key-Value DB。Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像memcached只能保存1MB的数据,可以用来实现很多有用的功能。Redis可以对存入的Key-Value设置expire时间,因此也可以被当作一个功能加强版的memcached来用。

Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。

2、Memcache与Redis的区别都有哪些?

1)数据支持类型:Memcache对数据类型支持相对简单。 Redis有复杂的数据类型。

2)储方式:Memecache把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。 Redis有部份存在硬盘上,这样能保证数据的持久性。

3)使用底层模型不同:它们之间底层实现方式 以及与客户端之间通信的应用协议不一样。 Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。

3、为什么Redis需要把所有数据放到内存中?

Redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘。所以redis具有快速和数据持久化的特征。如果不将数据放在内存中,磁盘I/O速度为严重影响redis的性能。如果设置了最大使用的内存,则数据已有记录数达到内存限值后不能继续插入新值。

4、Redis的并发竞争问题如何解决?

Redis为单进程单线程模式,采用队列模式将并发访问变为串行访问。Redis本身没有锁的概念,Redis对于多个客户端连接并不存在竞争,但是在Jedis客户端对Redis进行并发访问时会发生连接超时、数据转换错误、阻塞、客户端关闭连接等问题,这些问题均是由于客户端连接混乱造成。对此有2种解决方法:

客户端角度,为保证每个客户端间正常有序与Redis进行通信,对连接进行池化,同时对客户端读写Redis操作采用内部锁synchronized。需要应用程序自己处理资源的同步,可以使用的方法比较通俗,可以使用synchronized也可以使用lock。

服务器角度,利用setnx实现锁,需要用到Redis的setnx命令,但是需要注意一些问题。

5、Redis持久化的几种方式

1)快照(snapshots)。缺省情况情况下,Redis把数据快照存放在磁盘上的二进制文件中,文件名为dump。rdb。你可以配置Redis的持久化策略,例如数据集中每N秒钟有超过M次更新,就将数据写入磁盘;或者你可以手工调用命令SAVE或BGSAVE。

2)AOF。快照模式并不十分健壮,当系统停止,或者无意中Redis被kill掉,最后写入Redis的数据就会丢失。Append-only文件模式是另一种选择,你可以在配置文件中打开AOF模式。

3)虚拟内存方式。当你的key很小而value很大时,使用VM的效果会比较好。因为这样节约的内存比较大。当你的key不小时,可以考虑使用一些非常方法将很大的key变成很大的value,比如你可以考虑将key,value组合成一个新的value。

6、Redis最适合的场景

会话缓存(Session Cache)、全页缓存(FPC)、队列、排行榜/计数器、发布/订阅。

想要更快更好的通过企业面试,你需要对企业的招聘需求有所了解,专业的Java开发技能是前提。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值