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(当然这是数据量不会特别大的情况下才能这样粗糙的去做)

Redis具有多种实际应用场景,包括但不限于以下几个方面: 1. 缓存:Redis最常见的用途就是作为缓存层,将经常访问的数据存储在内存中,以提高读取速度和减轻后端数据库的负载。通过使用Redis的高速读写能力,可以大幅提升系统的响应性能。 2. 会话存储:Redis可以用作会话存储,将用户的会话数据存储在内存中,实现快速的会话访问和管理。这对于需要处理大量并发用户请求的应用程序特别有用。 3. 消息队列:Redis支持发布-订阅模式(Pub/Sub),可以作为消息队列系统使用。通过将消息发布到特定的频道,不同的客户端可以订阅这些频道并接收实时的消息推送。这在实时通知、实时聊天和异步任务处理等场景中非常有用。 4. 计数器和排行榜:Redis提供了原子性操作和快速的计数功能,可用于实现计数器和排行榜功能。例如,在社交媒体应用中,可以使用Redis来实时统计用户的粉丝数量或文章的点赞数,并根据这些数据生成排行榜。 5. 地理位置服务:Redis的地理位置功能(Geo)可以存储和查询地理位置信息,如坐标和半径范围内的位置。这使得Redis在构建地理位置服务(如附近的人、门店定位等)时非常有用。 总之,Redis是一个功能强大且灵活的内存数据库,可用于多种实际应用场景,包括缓存、会话存储、消息队列、计数器和排行榜,以及地理位置服务等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

麦田小猪

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

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

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

打赏作者

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

抵扣说明:

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

余额充值