JAVA面试题(35)

176 阅读1分钟

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

  • Redis 为什么是单线程的?
  • 什么是缓存穿透?怎么解决?
    • 参考地址
    • 缓存穿透
      • 缓存是key命中时数据写入内存的
      • 缓存穿透是指利用不存在key进行缓存查询,当缓存不存在此key则到数据库查询,当请求量级比较大时,数据库有可能宕机
    • 解决方法
      • 在某些特定场景使用验证码
      • 布隆过滤法
        • 利用多种HASH算法对数据标识位进行缓存
  • Redis 支持的数据类型有哪些?
    • string
      • 字符串
    • hash
      • 散列
    • list
      • 列表
      • 内部使用双向链表实现
      • 访问端元素较快,通过索引访问较慢
    • set
      • 无序集合
      • 内部通过value为null的散列表实现
    • zset
      • 有序集合
  • Redis 支持的 Java 客户端都有哪些?
    • 参考博客
    • Jedis
      • 优点
        • 轻量简洁
        • 支持连接池
        • 支持pipelining、事务、LUA Scripting、Redis Sentinel、Redis Cluster
      • 缺点
        • 不支持读写分离
        • 文档支持不足
    • Redisson
      • 官方推荐
      • 优点
        • 采用非阻塞IO
        • 支持异步请求
        • 支持连接池
        • 支持pipelining、LUA Scripting、Redis Sentinel、Redis Cluster
        • 支持读写分离以及读负载平衡
        • 可与Spring Session集成
        • 文档支持充足
    • lettuce
      • 优点
        • 线程安全
        • 支持异步请求
        • 采用非阻塞IO
        • 支持哨兵模式
        • 支持集群