面试题-Java基础(十八)- Redis

1、Redis是什么?有哪些使用场景?

redis是一个开源使用的ANSI C语言编写,支持网络,可基于内存亦可支持持久化的日志型,key-value数据库,并提供多语言的API。

redis的使用场景:

  • 数据高并发的读写
  • 海量数据读写
  • 对扩展性要求高的数据

2、Redis有哪些功能?

  • 数据缓存  
  • 分布式锁功能
  • 支持数据的持久化
  • 支持事务
  • 支持消息队列

3、Redis和memecache的区别?

4、Redis是单线程的吗?

Redis是单线程的,但是CPU不是Redis性能的瓶颈,Redis的瓶颈最可能是机器的内存或者网络的带宽。

5、什么缓存穿透?详解

指的是查询一个一定不存在的数据,由于缓存中没有命中时需要去数据库查询,这将导致每次该数据请求的时候都会去数据库查询,从而造成缓存穿透。

解决方案:如果查询返回的数据为空(没有数据或者系统故障),都把这个空结果进行缓存,并为其是指一个极短的失效时间。

6、redis 支持哪些数据类型?

string,list,hash,set,zset,bitmap,hyperloglog,geospatial(新增的三种特殊类型);

面试问题:Redis 中hash类型数据的使用场景?详解

7、redis支持的java客户端有哪些?

redission,jedis等。官方推荐使用redission,我们使用的jedis jedis轻量级便于集成,支持事务。

8、Jedis和redission有哪些区别?

Redission 相比于 jedis 功能较为简单,不支持字符串操作,不支持排序,事务,分区,管道等Redis特性。Redission的宗旨是促进使用者对Redis关注的分离

9、怎么保证缓存和数据库数据的一致性?

  • 合理设置的缓存过期时间
  • 新增,删除,修改数据库操作同步更新Redis,可以通过事务机制来保证一致性。

10、redis的持久化有几种方式?详情

  • RDB:指定的时间间隔会对数据进行快照
  • AOF:每一个收到的写命令都会通过write函数写到文件中

11、redis怎么实现分布式锁?

redis分布式锁其实就是在系统中占一个“坑”,其他程序也要占这个“坑”的时候,占用成功就是继续执行,占用失败就稍后再试。

12、redis分布式锁有什么缺陷?

redis分布式锁无法解决超时问题。分布式锁有一个超时时间,如果程序执行超过了这个超时时间就会出现问题。

13、redis是如何进行内存优化的?

尽可能使用散列表(哈希表key-value),散列表使用的内存空间特别小。尽量将业务的数据模型抽象到一个散列表中。

例如用户信息,不要将用户名,密码等单独设置一个key,而是将该用户的全部信息存放在一张散列表中。

14、redis淘汰策略有哪些?

  • volatile-lru:从已设置过期时间的数据集(server. db[i]. expires)中挑选最近最少使用的数据淘汰。
  • volatile-ttl:从已设置过期时间的数据集(server. db[i]. expires)中挑选将要过期的数据淘汰。
  • volatile-random:从已设置过期时间的数据集(server. db[i]. expires)中任意选择数据淘汰。
  • allkeys-lru:从数据集(server. db[i]. dict)中挑选最近最少使用的数据淘汰。
  • allkeys-random:从数据集(server. db[i]. dict)中任意选择数据淘汰。
  • no-enviction(驱逐):禁止驱逐数据。

15、redis常见的性能问题有哪些?怎么解决?

主服务器写内存快照,会阻塞主线程的工作,当快照比较大时对性能的影响是比较大的。会间断性暂停服务。

 

 

下一节 JVM

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值