redis实际场景应用

例子:有一张表:ArticleTable,其中有playCount,upCount,commentCount分别用来记录浏览数,点赞数跟评论数

为什么选择redis:对于一篇比较热的文章,容易出现同一时刻成百上千的浏览跟点赞等操作,如果针对这些操作即时的进行MySQL的update那么会出现并发锁问题,导致应用体验性不好。而redis作为一个支持高并发读写的内存nosql,每秒能支撑几万的写操作(网上资料这么说,我自己也没实际测过,但是试过一万的并发写是没问题的)


业务场景:需要有个列表能够展示最新的文章列表,每页展示10页。列表中需要有点赞数,浏览数,评论数


存储方案:

ArticleTable基本信息:持久化存储到Mysql(包括各种数)来确保数据完整性。

将playCount,upCount,commentCount存储到redis中


在redis使用什么结构存储:

使用Hash结构来进行存储,其中key为ArticleTable;(也可以根据key的hash值分别存储到多个hash结构中,针对量比较大的情况)

field为playCount:ArticleTable.id,upCount:ArticleTable.id,commentCount:ArticleTable.id;

value为播放数

每次有用户操作时可以根据ArticleTable.id对相应的内容进行递增操作


在每次列表查询的时候遍历一下结果集,然后根据结果集的Id去redis中获取播放数,点赞数,评论数并赋值到结果集中返回,以来实现各种数量的实时性。


然后定时间(根据业务需求)将redis同步到mysql:写一个定时程序,使用hgetAll获取全部,然后遍历update到mysql(当然这是数据量不会特别大的情况下才能这样粗糙的去做)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

麦田小猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值