文章分类 -  redis

摘要:我们在使用Redis时,不可避免地会遇到并发访问的问题,比如说如果多个用户同时下单,就会对缓存在Redis中的商品库存并发更新。一旦有了并发写操作,数据就会被修改,如果我们没有对并发写请求做好控制,就可能导致数据被改错,影响到业务的正常使用(例如库存数据错误,导致下单异常)。 为了保证并发访问的正确 阅读全文
posted @ 2022-03-23 17:18 痞子胥 阅读(403) 评论(0) 推荐(0)
摘要:我们应用Redis缓存时,如果能缓存会被反复访问的数据,那就能加速业务应用的访问。但是,如果发生了缓存污染,那么,缓存对业务应用的加速作用就减少了。 那什么是缓存污染呢?在一些场景下,有些数据被访问的次数非常少,甚至只会被访问一次。当这些数据服务完访问请求后,如果还继续留存在缓存中的话,就只会白白占 阅读全文
posted @ 2022-03-09 23:19 痞子胥 阅读(74) 评论(0) 推荐(0)
摘要:上节课,我们学习了缓存和数据库的数据不一致问题和应对方法。除了数据不一致问题,我们常常还会面临缓存异常的三个问题,分别是缓存雪崩、缓存击穿和缓存穿透。这三个问题一旦发生,会导致大量的请求积压到数据库层。如果请求的并发量很大,就会导致数据库宕机或是故障,这就是很严重的生产事故了。 这节课,我就来和你聊 阅读全文
posted @ 2022-03-09 23:18 痞子胥 阅读(149) 评论(0) 推荐(0)
摘要:在实际应用Redis缓存时,我们经常会遇到一些异常问题,概括来说有4个方面:缓存中的数据和数据库中的不一致;缓存雪崩;缓存击穿和缓存穿透。 只要我们使用Redis缓存,就必然会面对缓存和数据库间的一致性保证问题,这也算是Redis缓存应用中的“必答题”了。最重要的是,如果数据不一致,那么业务应用从缓 阅读全文
posted @ 2022-03-09 23:17 痞子胥 阅读(262) 评论(0) 推荐(0)
摘要:Redis缓存使用内存来保存数据,避免业务应用从后端数据库中读取数据,可以提升应用的响应速度。那么,如果我们把所有要访问的数据都放入缓存,是不是一个很好的设计选择呢?其实,这样做的性价比反而不高。 举个例子吧。MySQL中有1TB的数据,如果我们使用Redis把这1TB的数据都缓存起来,虽然应用都能 阅读全文
posted @ 2022-03-09 23:16 痞子胥 阅读(286) 评论(0) 推荐(0)
摘要:我们知道,Redis提供了高性能的数据存取功能,所以广泛应用在缓存场景中,既能有效地提升业务应用的响应速度,还可以避免把高并发大压力的请求发送到数据库层。 但是,如果Redis做缓存时出现了问题,比如说缓存失效,那么,大量请求就会直接积压到数据库层,必然会给数据库带来巨大的压力,很可能会导致数据库宕 阅读全文
posted @ 2022-03-09 23:15 痞子胥 阅读(121) 评论(0) 推荐(0)
摘要:缓冲区的功能其实很简单,主要就是用一块内存空间来暂时存放命令数据,以免出现因为数据和命令的处理速度慢于发送速度而导致的数据丢失和性能问题。但因为缓冲区的内存空间有限,如果往里面写入数据的速度持续地大于从里面读取数据的速度,就会导致缓冲区需要越来越多的内存来暂存数据。当缓冲区占用的内存超出了设定的上限 阅读全文
posted @ 2022-03-08 00:39 痞子胥 阅读(261) 评论(0) 推荐(0)
摘要:在使用Redis时,我们经常会遇到这样一个问题:明明做了数据删除,数据量已经不大了,为什么使用top命令查看时,还会发现Redis占用了很多内存呢? 实际上,这是因为,当数据删除后,Redis释放的内存空间会由内存分配器管理,并不会立即返回给操作系统。所以,操作系统仍然会记录着给Redis分配了大量 阅读全文
posted @ 2022-03-08 00:38 痞子胥 阅读(338) 评论(0) 推荐(0)
摘要:在Redis的实际部署应用中,有一个非常严重的问题,那就是Redis突然变慢了。一旦出现这个问题,不仅会直接影响用户的使用体验,还可能会影响到“旁人”,也就是和Redis在同一个业务系统中的其他系统,比如说数据库。 举个小例子,在秒杀场景下,一旦Redis变慢了,大量的用户下单请求就会被拖慢,也就是 阅读全文
posted @ 2022-03-08 00:37 痞子胥 阅读(133) 评论(0) 推荐(0)
摘要:上节课,我介绍了判断Redis变慢的两种方法,分别是响应延迟和基线性能。除此之外,我还给你分享了从Redis的自身命令操作层面排查和解决问题的两种方案。 但是,如果在排查时,你发现Redis没有执行大量的慢查询命令,也没有同时删除大量过期keys,那么,我们是不是就束手无策了呢? 当然不是!我还有很 阅读全文
posted @ 2022-03-08 00:37 痞子胥 阅读(47) 评论(0) 推荐(0)
摘要:很多人都认为Redis和CPU的关系很简单,就是Redis的线程在CPU上运行,CPU快,Redis处理请求的速度也很快。 这种认知其实是片面的。CPU的多核架构以及多CPU架构,也会影响到Redis的性能。如果不了解CPU对Redis的影响,在对Redis的性能进行调优时,就可能会遗漏一些调优方法 阅读全文
posted @ 2022-03-08 00:35 痞子胥 阅读(96) 评论(0) 推荐(0)
摘要:Redis之所以被广泛应用,很重要的一个原因就是它支持高性能访问。也正因为这样,我们必须要重视所有可能影响Redis性能的因素(例如命令操作、系统配置、关键机制、硬件配置等),不仅要知道具体的机制,尽可能避免性能异常的情况出现,还要提前准备好应对异常的方案。 所以,从这节课开始,我会用6节课的时间介 阅读全文
posted @ 2022-03-08 00:34 痞子胥 阅读(62) 评论(0) 推荐(0)
摘要:现在的互联网应用基本上都是采用分布式系统架构进行设计的,而很多分布式系统必备的一个基础软件就是消息队列。 消息队列要能支持组件通信消息的快速读写,而Redis本身支持数据的高速访问,正好可以满足消息队列的读写性能需求。不过,除了性能,消息队列还有其他的要求,所以,很多人都很关心一个问题:“Redis 阅读全文
posted @ 2022-03-08 00:33 痞子胥 阅读(115) 评论(0) 推荐(0)
摘要:我们现在做互联网产品的时候,都有这么一个需求:记录用户在网站或者App上的点击行为数据,来分析用户行为。这里的数据一般包括用户ID、行为类型(例如浏览、登录、下单等)、行为发生的时间戳: UserID, Type, TimeStamp 我之前做过的一个物联网项目的数据存取需求,和这个很相似。我们需要 阅读全文
posted @ 2022-03-08 00:08 痞子胥 阅读(350) 评论(0) 推荐(0)
摘要:之前我们学习了Redis的5大基本数据类型:String、List、Hash、Set和Sorted Set,它们可以满足大多数的数据存储需求,但是在面对海量数据统计时,它们的内存开销很大,而且对于一些特殊的场景,它们是无法支持的。所以,Redis还提供了3种扩展数据类型,分别是Bitmap、Hype 阅读全文
posted @ 2022-03-07 22:54 痞子胥 阅读(690) 评论(0) 推荐(0)
摘要:你好,我是蒋德钧。 从今天开始,我们就要进入“实践篇”了。接下来,我们会用5节课的时间学习“数据结构”。我会介绍节省内存开销以及保存和统计海量数据的数据类型及其底层数据结构,还会围绕典型的应用场景(例如地址位置查询、时间序列数据库读写和消息队列存取),跟你分享使用Redis的数据类型和module扩 阅读全文
posted @ 2022-03-07 21:25 痞子胥 阅读(66) 评论(0) 推荐(0)
摘要:我曾遇到过这么一个需求:要用Redis保存5000万个键值对,每个键值对大约是512B,为了能快速部署并对外提供服务,我们采用云主机来运行Redis实例,那么,该如何选择云主机的内存容量呢? 我粗略地计算了一下,这些键值对所占的内存空间大约是25GB(5000万*512B)。所以,当时,我想到的第一 阅读全文
posted @ 2022-02-23 19:17 痞子胥 阅读(73) 评论(0) 推荐(0)
摘要:上节课,我们学习了哨兵机制,它可以实现主从库的自动切换。通过部署多个实例,就形成了一个哨兵集群。哨兵集群中的多个实例共同判断,可以降低对主库下线的误判率。 但是,我们还是要考虑一个问题:如果有哨兵实例在运行时发生了故障,主从库还能正常切换吗? 实际上,一旦多个实例组成了哨兵集群,即使有哨兵实例出现故 阅读全文
posted @ 2022-02-23 18:45 痞子胥 阅读(44) 评论(0) 推荐(0)
摘要:上节课,我们学习了主从库集群模式。在这个模式下,如果从库发生故障了,客户端可以继续向主库或其他从库发送请求,进行相关的操作,但是如果主库发生故障了,那就直接会影响到从库的同步,因为从库没有相应的主库可以进行数据复制操作了。 而且,如果客户端发送的都是读操作请求,那还可以由从库继续提供服务,这在纯读的 阅读全文
posted @ 2022-02-23 17:43 痞子胥 阅读(79) 评论(0) 推荐(0)
摘要:前两节课,我们学习了AOF和RDB,如果Redis发生了宕机,它们可以分别通过回放日志和重新读入RDB文件的方式恢复数据,从而保证尽量少丢失数据,提升可靠性。 不过,即使用了这两种方法,也依然存在服务不可用的问题。比如说,我们在实际使用时只运行了一个Redis实例,那么,如果这个实例宕机了,它在恢复 阅读全文
posted @ 2022-02-23 17:39 痞子胥 阅读(94) 评论(0) 推荐(0)