Java 面试系列:Redis 面试题汇总

1.Redis 使用场景有哪些?

答:Redis 使用场景如下:

  • 记录帖子点赞数、点击数、评论数
  • 缓存近期热帖
  • 缓存文章详情信息
  • 记录用户会话信息

2.Redis 有哪些功能?

答:Redis 功能如下:

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

3.Redis 支持哪些数据类型?

答:Redis 支持的数据类型如下:

  • String 字符串
  • List 列表
  • Set 无序集合
  • ZSet 有序集合
  • Hash 哈希类型

4.Redis 相比 Memcached 有哪些优势?

答:Redis 相比 Memcached 优势如下:

  • Memcached 所有的值均是简单的字符串,Redis 支持更为丰富的数据类型
  • Redis 的速度比 Memcached 要快
  • Redis 可以持久化
  • Redis 可以设置过期时间
  • Redis 支持主从同步

5.Redis 支持哪些淘汰策略?

答:Redis 淘汰策略如下:

  • noeviction:禁止淘汰数据;
  • allkeys-lru:尝试回收最少使用的键,使得新添加的数据有空间存放;
  • volatile-lru:尝试回收最少使用的键,但仅限于在过期集合的键,使得新添加的数据有空间存放;
  • allkeys-random:回收随机的键使得新添加的数据有空间存放;
  • volatile-random:回收随机的键使得新添加的数据有空间存放,但仅限于在过期集合的键;
  • volatile-ttl:回收在过期集合的键,并且优先回收存活时间较短的键,使得新添加的数据有空间存放。

6.官方为什么不支持 Windows 版本?

答:Redis 官方是不支持 Windows 版的,因为目前 Linux 版本已经相当稳定,如果开发 Windows 版本,反而会带来兼容性等问题。

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

答:因为 Redis 的瓶颈最有可能是机器内存或者网络带宽,而非单线程,既然单线程不是 Redis 的性能瓶颈,并且单线程又比较容易实现,所以 Redis 就选择使用单线程来实现。

单线程并不代表运行速度就慢,比如,Nginx 和 NodeJs 都是单线程高性能的代表。

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

答:Redis 为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘,这样 Redis 就拥有了快速查询和数据持久化等特征。

9.在 Redis 中 key 的最大容量是多少?

答:最大容量 512 MB,官方说明如下图所示:

1

10.Jedis 和 Redisson 有什么区别?

答:Jedis 和 Redisson 的区别如下:

  • Jedis 是 Redis 的 Java 实现客户端,其 API 提供了比较全面的 Redis 命令的支持;
  • Redisson 实现了分布式和可扩展的 Java 数据结构,和 Jedis 相比,功能较为简单,不支持字符串操作,不支持排序、事务、管道、分区等 Redis 特性。Redisson 的宗旨是促进使用者对 Redis 的关注分离,从而让使用者能够将精力更集中地放在处理业务逻辑上。

11.Redis 如何设置过期时间?如何设置永久有效?

答:Redis 通过 expire() 方法设置过期时间,语法:redis.expire(key, expiration)。当 expire 的过期时间设置为 -1 时,表示永不过期。

12.如何保证 Redis 的数据一致性?

答:可使用以下方法来保证 Redis 的数据一致性:

你可能感兴趣的:(Java 面试系列:Redis 面试题汇总)