Redis分布式的理解

Posted cool小伙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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分布式的理解的主要内容,如果未能解决你的问题,请参考以下文章

分布式缓存 Redis - 理解Redis的单线程操作

带你深入理解 Redis分布式锁...

分布式缓存技术redis学习——redis简介以及linux上的安装

分布式缓存技术redis学习系列----深入理解Spring Redis的使用

分布式缓存技术redis学习系列——redis简介以及linux上的安装

这才叫细:带你深入理解Redis分布式锁