JAVA面试题35

4次阅读

共计 713 个字符,预计需要花费 2 分钟才能阅读完成。

    本文首发于 cartoon 的博客
     转载请注明出处:https://cartoonyu.github.io/c…

  • Redis 为什么是单线程的?

    • 参考博客户

      • https://blog.csdn.net/chenyao…
    • Redis 是基于内存的,瓶颈通常是内存大小以及带宽,与 CPU 没有太大联系
  • 什么是缓存穿透?怎么解决?

    • 参考地址

      • https://www.jianshu.com/p/400…
    • 缓存穿透

      • 缓存是 key 命中时数据写入内存的
      • 缓存穿透是指利用不存在 key 进行缓存查询,当缓存不存在此 key 则到数据库查询,当请求量级比较大时,数据库有可能宕机
    • 解决方法

      • 在某些特定场景使用验证码
      • 布隆过滤法

        • 利用多种 HASH 算法对数据标识位进行缓存
  • Redis 支持的数据类型有哪些?

    • string

      • 字符串
    • hash

      • 散列
    • list

      • 列表
      • 内部使用双向链表实现
      • 访问端元素较快,通过索引访问较慢
    • set

      • 无序集合
      • 内部通过 value 为 null 的散列表实现
    • zset

      • 有序集合
  • Redis 支持的 Java 客户端都有哪些?

    • 参考博客

      • https://blog.csdn.net/moonpur…
    • Jedis

      • 优点

        • 轻量简洁
        • 支持连接池
        • 支持 pipelining、事务、LUA Scripting、Redis Sentinel、Redis Cluster
      • 缺点

        • 不支持读写分离
        • 文档支持不足
    • Redisson

      • 官方推荐
      • 优点

        • 采用非阻塞 IO
        • 支持异步请求
        • 支持连接池
        • 支持 pipelining、LUA Scripting、Redis Sentinel、Redis Cluster
        • 支持读写分离以及读负载平衡
        • 可与 Spring Session 集成
        • 文档支持充足
    • lettuce

      • 优点

        • 线程安全
        • 支持异步请求
        • 采用非阻塞 IO
        • 支持哨兵模式
        • 支持集群
正文完
 0