Redis 在 SNS 类应用中的优异实践有:1、消息队列(通知类、延迟更新类);2、热点数据的实时缓存(比如feed,数据库、缓存同时写);3、热点列表数据缓存(首页、热门话题等);4、counter(计数器,大多是用缓存实现的)。
一、Redis 在 SNS 类应用中的优异实践
- 消息队列(通知类、延迟更新类);
- 热点数据的实时缓存(比如feed,数据库、缓存同时写);
- 热点列表数据缓存(首页、热门话题等);
- counter(计数器,大多是用缓存实现的)。
二、Redis适合做什么
- 缓存,Redis本身是内存数据库,注定有极高的读写速度和吞吐,加上数据过期功能以及完善的数据淘汰策略使得Redis拥有与生俱来的缓存潜质。
- 排行榜系统,Redis提供了zset、list等复杂数据结构,以及极佳的性能,可以做出时间、数量等各种维度的排行榜系统。
- 计数器系统,对于视频(音乐)网站的视频播放量、网页浏览量等高频操作,传统的关系型数据库不能够满足需求,Redis本身的incr、incrby等命令很好的支持了这计数功能。
- 社交网络,Redis支持多种复杂数据结构,比如一个用户有自己的粉丝,同时也会关注其他人,这些多可以使用set来存储,如果需要有序,可以使用zset来存储,这些复杂的数据结构传统的关系型数据库并不能很好的支持,同时,由于社交网络网站本身访问量比较大,传统数据在性能上也是不能够满足的。
- 消息队列,Redis提供了消息队列功能,能够满足一般的消息队列需求。
- 分布式锁,Redis提供了SET key value [EX seconds] [PX milliseconds] [NX|XX]命令,以及Lua脚本功能,基于此能够很好的实现分布式锁功能。
三、Redis 不适合做什么
- Redis是内存数据库,相比磁盘类型的数据库成本要高不少,注定了Redis不能用于存储大规模的数据。
- Redis有足够高的性能,因此对于热数据能够很好满足需求,但如果冷数据存在Redis里不免过于浪费。
- Redis数据存储在内存中,对于可用性要求极高,且需要永久保存的数据不建议放在Redis中,虽然Redis提供持久化、复制等功能保证数据落盘,但持久化、复制等也存在时间差,这段时间的数据也不是能够完全保证不丢失的。
- Redis是单线程的,对于数据比较大的数据的读写操作会阻塞整个数据库,因此Redis不适合存储单个value比较大的数据。
延伸阅读
Redis特性
- Redis是一直基于键值对的NoSQL数据库;
- Redis支持5种主要数据结构:string、hash、list、set、zset以及bitmaps、hyperLoglog、GEO等特化的数据结构;
- Redis是内存数据库,因此它有足够好的读写性能;
- Redis支持持久化,redis支持AOF和RDB两种持久化方式,确保了内存中的数据不会“丢失”;
- Redis的sentinel和复制功能保证了Redis的高可用;
- Redis支持key维度的数据过期;
- Redis支持发布订阅、“事务”、pipeline、Lua脚本等附加功能。
文章标题:Redis 在 SNS 类应用中的优异实践有哪些,发布者:Z, ZLW,转载请注明出处:https://worktile.com/kb/p/34721