七叶笔记 » 数据库 » 基于Redis的List实现特价商品列表功能

基于Redis的List实现特价商品列表功能

 1、场景分析

淘宝京东的特价商品列表,

商品特点:

商品有限,并发量非常的大。 考虑分页

传统解决方案:数据库db,

但是在如此大的并发量的情况下,不可取。

一般会采用redis来处理。这些特价商品的数据不多,而且redis的list本身也支持分页。是天然处理这种列表的最佳选择解决方案。

2、分析

采用list数据,因为list数据结构有:lrange key 0 -1 可以进行数据的分页。

3 、具体实现

淘宝,京东的热门商品在双11的时候,可能有100多w需要搞活动:程序需要5分钟对特价商品进行刷新。

3.1 ProductListService类  初始化的活动的商品信息100个(从数据库去查询)

@PostContrcut使用

 查询产品列表信息

换算的分页的起始位置和结束位置

3.2 商品的数据接口的定义和展示及分页

3.3 定时任务

4、解决商品列表存在的缓存击穿问题

 4.1 如何引起的缓存击穿的情况

出现原因:

特价商品的数据更换需要时间,刚好特价商品还没有放入到redis缓存中。 查询特价商品的并发量非常大,可能程序还正在写入特价商品到缓存中,这时查询缓存根本没有数据,就会直接冲入数据库中去查询特价商品。可能造成数据库冲垮。这个就叫做:缓存击穿

4.2 解决方案

主从轮询

可以开辟两块redis的集合空间A和B。定时器在更新缓存的时候,先更新B缓存,然后再更新A缓存。

一定要按照特定顺序来处理。

到此这篇关于基于Redis的List实现特价商品列表的文章就介绍到这了,更多相关redis list商品列表内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!

相关文章