• Redis分布式的理解


    redis 是一个基于内存的高性能 key-value数据库,支持丰富的数据类型(String,List , Set ,Sorted Set,Hash )redis中的单个value的存储限制是1G,比 Memcached的1MB要强大太多。

    问题一:  

    如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍一下么?redis 的哨兵原理能介绍一下么?

    面试官心理分析:

    其实问这个问题,主要是考考你,redis 单机能承载多高并发?如果单机扛不住如何扩容扛更多的并发?redis 会不会挂?既然 redis 会挂那怎么保证 redis 是高可用的?

    其实针对的都是项目中你肯定要考虑的一些问题,如果你没考虑过,那确实你对生产系统中的问题思考太少。

    面试题剖析:

    如果你用 redis 缓存技术的话,肯定要考虑如何用 redis 来加多台机器,保证 redis 是高并发的,还有就是如何让 redis 保证自己不是挂掉以后就直接死掉了,即 redis 高可用。

    由于此节内容较多,因此,会分为两个小节进行讲解。 - redis 主从架构 - redis 基于哨兵实现高可用

    redis 实现高并发主要依靠主从架构,一主多从,一般来说,很多项目其实就足够了,单主用来写入数据,单机几万 QPS,多从用来查询数据,多个从实例可以提供每秒 10w 的 QPS。

    如果想要在实现高并发的同时,容纳大量的数据,那么就需要 redis 集群,使用 redis 集群之后,可以提供每秒几十万的读写并发。

    redis 高可用,如果是做主从架构部署,那么加上哨兵就可以了,就可以实现,任何一个实例宕机,可以进行主备切换。

    问题二:

    MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中的数据都是热点数据

    相关知识:redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。redis 提供 6 种数据淘汰策略:

    voltile-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(驱逐):禁止驱逐数据

    最新大厂关于Redis面试真题:

      • Pipeline 有什么好处,为什么要用 pipeline?
      • 是否使用过 Redis 集群,集群的原理是什么?
      • Redis 集群方案什么情况下会导致整个集群不可用?
      • Redis 支持的 Java 客户端都有哪些?官方推荐用哪个?
      • Jedis 与 Redisson 对比有什么优缺点?
      • Redis 如何设置密码及验证密码?
      • 说说 Redis 哈希槽的概念?
      • Redis 集群的主从复制模型是怎样的?
      • Redis 集群会有写操作丢失吗?为什么?
      • Redis 集群之间是如何复制的?
      • Redis 集群最大节点个数是多少?
      • Redis 集群如何选择数据库?
      • 怎么测试 Redis 的连通性?
      • 怎么理解 Redis 事务?
      • Redis 事务相关的命令有哪几个?
      • Redis key 的过期时间和永久有效分别怎么设置?
      • Redis 如何做内存优化?
      • Redis 回收进程如何工作的?
      • 都有哪些办法可以降低 Redis 的内存使用情况呢?
      • Redis 的内存用完了会发生什么?
      • 一个 Redis 实例最多能存放多少的 keys?List、Set、Sorted Set他们最多能存放多少元素?
      • Redis 最适合的场景?
      • 假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是以某个固定的已知的前缀开头的,如果将它们全部找出来?
      • 如果有大量的 key 需要设置同一时间过期,一般需要注意什么?
      • 使用过 Redis 做异步队列么,你是怎么用的?
      • 使用过 Redis 分布式锁么,它是什么回事?
  • 相关阅读:
    [redis] 普通 RedisPool 的 CRUD 实现
    [maven] 常用仓库地址
    [saiku] 通过 saiku 的 DEMO 分析 connection
    [backbone]backbone.js
    [saiku] JCR在saiku中的运用原理
    [redis] 分布式 Redis 的 CRUD 实现
    [redis] session 保存到 redis 简单实现
    [redis] redis 存取键值对常用的三种使用方式
    226. Invert Binary Tree
    225. Implement Stack using Queues
  • 原文地址:https://www.cnblogs.com/xiaozengzeng/p/12641086.html
Copyright © 2020-2023  润新知