sufu1065
这个作者很懒,什么都没留下…
展开
-
Redis 属于单线程还是多线程?不同的版本有什么区别?
Redis 是普及率最高的技术之一,同时也是面试中必问的一个技术模块,所以从今天开始我们将从最热门的 Redis 面试题入手,更加深入的学习和了解一下 Redis。我们本文的面试题是 Redis 属于单线程还是多线程?典型回答本文的问题在不同的 Redis 版本下答案是不同的,在 Redis 4.0 之前,Redis 是单线程运行的,但单线程并不意味着性能低,类似单线程的程序还有 Nginx...原创 2020-10-28 16:10:55 · 1176 阅读 · 0 评论 -
Redis 如何实现限流功能?
“限流”这种事在生活中很常见,比如逢年过节时景点的限流,还有工作日的车辆单双号限流等,有人可能会问为什么要限流?我既然买了车子你还不让我上路开?还有我倒景点买了门票,景点不是能赚更多的钱吗?为什么要限流呢?其实限流的主要目的就是为了保证整个系统的正常运行,比如以车辆限流为了,它的作用主要有两个,一个是为了保证我们生存空间的资源少受污染,尤其是近几年雾霾已经越来越严重了,如果不采取相应的手段会导致...原创 2020-10-28 16:10:55 · 1015 阅读 · 0 评论 -
Redis 有哪些数据类型?
Redis 的数据类型可谓是 Redis 的精华所在,同样的数据类型,例如字符串存储不同的值对应的实际存储结构也是不同,当你存储的 int 值是实际的存储结构也是 int,如果是短字符串(小于 44 字节)实际存储的结构为 embstr,长字符串对应的实际存储结构是 raw,这样设计的目的是为了更好的节约内存。我们本文的面试题是 Redis 有哪些数据类型?典型回答Redis 最常用的数据类...原创 2020-10-28 16:10:56 · 444 阅读 · 0 评论 -
如何实现查询附近的人?
查询附近的人或者是附近的商家是一个实用且常用的功能,比如微信中“附近的人”或是美团外卖中“附近商家”等,如下图所示:那它是如何实现的呢?我们本文就一起来看。我们本文的面试题是,使用 Redis 如何实现查询附近的人?典型回答在说如何实现地理位置查询之前,首先我们需要搞清楚地理位置查询的基础知识。我们所处的任何位置都可以用经度和纬度来标识,经度的范围 -180 到 180,纬度的范围为:...原创 2020-10-28 16:10:56 · 1052 阅读 · 0 评论 -
Redis 内存用完会怎样?
在某些极端情况下,软件为了能正常运行会做一些保护性的措施,比如运行内存超过最大值之后的处理,以及键值过期之后的处理等,都属于此类问题,而专业而全面的回答这些问题恰好是一个工程师所具备的优秀品质。我们本文的面试题是 Redis 内存用完之后会怎么?典型回答Redis 的内存用完指的是 Redis 的运行内存超过了 Redis 设置的最大内存,此值可以通过 Redis 的配置文件 redis.c...原创 2020-10-28 16:10:57 · 355 阅读 · 0 评论 -
Redis 如何处理已经过期的数据?
上一篇我们讲了 Redis 内存用完之后的内存淘汰策略,它主要是用来出来异常情况下的数据清理,而本文讲的是 Redis 的键值过期之后的数据处理,讲的是正常情况下的数据清理,但面试者常常会把两个概念搞混,以至于和期望的工作失之交臂。我们本文的职责之一就是帮读者朋友搞清楚二者的区别,相信看完本文你就会对二者的概念有一个本质上的认识。我们本文的面试题是,Redis 如何处理已过期的数据?典型回答...原创 2020-10-28 16:10:57 · 606 阅读 · 0 评论 -
Redis 如何实现分布式锁?
锁是多线程编程中的一个重要概念,它是保证多线程并发时顺利执行的关键。我们通常所说的“锁”是指程序中的锁,也就是单机锁,例如 Java 中的 Lock 和 ReadWriteLock 等,而所谓的分布式锁是指可以使用在多机集群环境中的锁。我们本文的面试题是,使用 Redis 如何实现分布式锁?## 典型回答首先来说 Redis 作为一个独立的三方系统(通常被作为缓存中间件使用),其天生的优势...原创 2020-10-28 16:10:58 · 324 阅读 · 0 评论 -
如何保证 Redis 消息队列中的数据不丢失?
Redis 最常见的业务场景就是缓存读取与存储,而随着时间的推移,有人开始将它作为消息队列来使用了,并且随着 Redis 版本的发展,在 Redis.2.0.0 中新增了发布订阅模式(Pub/Sub)代表着官方开始正式支持消息队列的功能了,直到今天为止还有部分公司在实现轻量级的消息队列时,依然会选择使用 Redis 来实现。并且消息队列的知识点也会作为一个进阶型的面试题经常出现在面试当中。我们本...原创 2020-10-28 16:10:58 · 1022 阅读 · 0 评论 -
如何在海量数据中查询一个值是否存在?
一般面试中考察的题目通常是由三类组成的,基础面试题、进阶面试题、开放性面试题,而本文的题目则属于一个开放性的面试题,但对于 Redis 这种以数据为核心的缓存中间件来说,实现在海量数据中查询一个值是否存在还是相对比较容易的。因为是海量数据,所以我们就无法将每个键值都存起来,然后再从结果中检索数据了,比如数据库中的 select count(1) from tablename where id='...原创 2020-10-28 16:10:58 · 810 阅读 · 0 评论 -
使用 Redis 如何实现延迟队列?
延迟消息队列在我们的日常工作中经常会被用到,比如支付系统中超过 30 分钟未支付的订单,将会被取消,这样就可以保证此商品库存可以释放给其他人购买,还有外卖系统如果商家超过 5 分钟未接单的订单,将会被自动取消,以此来保证用户可以更及时的吃到自己点的外卖,等等诸如此类的业务场景都需要使用到延迟消息队列,又因为它在业务中比较常见,因此这个知识点在面试中也会经常被问到。我们本文的面试题是,使用 Red...原创 2020-10-28 16:10:59 · 420 阅读 · 0 评论 -
常用的 Redis 优化手段有哪些?
每个软件的常规操作有两种,一种是使用,另一种就是调优,对于 Redis 来说也是一样。关于 Redis 调优的问题一般会出现在 Redis 面试的后期,以此来考察面试者对于 Redis 的实际应用掌握,以及对于 Redis 高性能的追求与理解,因此本文就来重点的聊一聊关于 Redis 调优的相关问题。我们本文的面试题是,Redis 常见的优化手段有哪些?典型回答最有效的提高 Redis 性能...原创 2020-10-28 16:10:59 · 427 阅读 · 0 评论 -
如何设计不宕机的 Redis 高可用服务?
随着业务的不断发展和扩张我们需要更加稳定和高效的 Redis 服务,这是业务发展的必然趋势也是个人能力进阶的最高境界,我们需要一个高可用的 Redis 服务,来支撑和保证业务的正常运行。我们本文的面试题是,如何设计一个不宕机的 Redis 高可用服务?典型回答想要设计一个高可用的 Redis 服务,那么一定要从 Redis 的多机功能来考虑,比如 Redis 的主从、哨兵以及 Redis 集...原创 2020-10-28 16:11:00 · 261 阅读 · 0 评论 -
Redis 面试题补充与汇总
前面的 12 个章节对 Redis 的面试题做了一个系统的讲解,那么本文将对 Redis 的热门面试题再做一个补充,力求覆盖到更多的 Redis 面试点。Redis 持久化Redis 持久化总共有以下三种方式:快照方式(RDB, Redis DataBase)将某一个时刻的内存数据,以二进制的方式写入磁盘;文件追加方式(AOF, Append Only File),记录所有的操作命令,并...原创 2020-10-28 16:11:00 · 407 阅读 · 0 评论