当前位置:网站首页>Redis入门完整教程:Redis使用场景
Redis入门完整教程:Redis使用场景
2022-07-04 22:29:00 【谷哥学术】
1.3.1 Redis可以做什么
1.缓存
缓存机制几乎在所有的大型网站都有使用,合理地使用缓存不仅可以加
快数据的访问速度,而且能够有效地降低后端数据源的压力。Redis提供了
键值过期时间设置,并且也提供了灵活控制最大内存和内存溢出后的淘汰策
略。可以这么说,一个合理的缓存设计能够为一个网站的稳定保驾护航。第
11章将对缓存的设计与使用进行详细说明。
2.排行榜系统
排行榜系统几乎存在于所有的网站,例如按照热度排名的排行榜,按照
发布时间的排行榜,按照各种复杂维度计算出的排行榜,Redis提供了列表
和有序集合数据结构,合理地使用这些数据结构可以很方便地构建各种排行
榜系统。
3.计数器应用
计数器在网站中的作用至关重要,例如视频网站有播放数、电商网站有
浏览数,为了保证数据的实时性,每一次播放和浏览都要做加1的操作,如
果并发量很大对于传统关系型数据的性能是一种挑战。Redis天然支持计数
功能而且计数的性能也非常好,可以说是计数器系统的重要选择。
4.社交网络
赞/踩、粉丝、共同好友/喜好、推送、下拉刷新等是社交网站的必备功能,由于社交网站访问量通常比较大,而且传统的关系型数据不太适合保存
这种类型的数据,Redis提供的数据结构可以相对比较容易地实现这些功
能。
5.消息队列系统
消息队列系统可以说是一个大型网站的必备基础组件,因为其具有业务
解耦、非实时业务削峰等特性。Redis提供了发布订阅功能和阻塞队列的功
能,虽然和专业的消息队列比还不够足够强大,但是对于一般的消息队列功
能基本可以满足。
1.3.2 Redis不可以做什么
实际上和任何一门技术一样,每个技术都有自己的应用场景和边界,也
就是说Redis并不是万金油,有很多适合它解决的问题,但是也有很多不合
适它解决的问题。我们可以站在数据规模和数据冷热的角度来进行分析。
站在数据规模的角度看,数据可以分为大规模数据和小规模数据,我们
知道Redis的数据是存放在内存中的,虽然现在内存已经足够便宜,但是如
果数据量非常大,例如每天有几亿的用户行为数据,使用Redis来存储的
话,基本上是个无底洞,经济成本相当的高。
站在数据冷热的角度看,数据分为热数据和冷数据,热数据通常是指需
要频繁操作的数据,反之为冷数据,例如对于视频网站来说,视频基本信息
基本上在各个业务线都是经常要操作的数据,而用户的观看记录不一定是经
常需要访问的数据,这里暂且不讨论两者数据规模的差异,单纯站在数据冷
热的角度上看,视频信息属于热数据,用户观看记录属于冷数据。如果将这
些冷数据放在Redis中,基本上是对于内存的一种浪费,但是对于一些热数
据可以放在Redis中加速读写,也可以减轻后端存储的负载,可以说是事半
功倍。
所以,Redis并不是万金油,相信随着我们对Redis的逐步学习,能够清
楚Redis真正的使用场景。
1.4 用好Redis的建议
1.切勿当作黑盒使用,开发与运维同样重要
很多使用Redis的开发者认为只要会用API开发相应的功能就可以,更有
甚者认为Redis就是get、set、del,不需要知道Redis的原理。但是在我们实
际运维和使用Redis的过程中发现,很多线上的故障和问题都是由于完全把
Redis当做黑盒造成的,如果不了解Redis的单线程模型,有些开发者会在有
上千万个键的Redis上执行keys*操作,如果不了解持久化的相关原理,会在
一个写操作量很大的Redis上配置自动保存RDB。而且在很多公司内只有专
职的关系型数据库DBA,并没有NoSQL的相关运维人员,也就是说开发者
很有可能会自己运维Redis,对于Redis的开发者来说既是好事又是坏事。站
在好的方面看,开发人员可以通过运维Redis真正了解Redis的一些原理,不
单纯停留在开发上。站在坏的方面看,Redis的开发人员不仅要支持开发,
还要承担运维的责任,而且由于运维经验不足可能会造成线上故障。但是从
实际经验来看,运维足够规模的Redis会对用好Redis更加有帮助。
2.阅读源码
我们在前面提到过,Redis是开源项目,由于作者对Redis代码的极致追
求,Redis的代码量相对于许多NoSQL数据库来说是非常小的,也就意味着
作为普通的开发和运维人员也是可以“吃透”Redis的。通过阅读优秀的源
码,不仅能够加深我们对于Redis的理解,而且还能提高自身的编码水平,
甚至可以对Redis做定制化,也就是说可以修改Redis的源码来满足自身的需
求,例如新浪微博在Redis的早期版本上做了很多的定制化来满足自身的需求,豌豆荚也开源基于Proxy的Redis分布式实现Codis。
边栏推荐
- Solana chain application crema was shut down due to hacker attacks
- 都说软件测试很简单有手就行,但为何仍有这么多劝退的?
- Unity Xiuxian mobile game | Lua dynamic sliding function (specific implementation of three source codes)
- Breakpoint debugging under vs2019 c release
- Analysis of environmental encryption technology
- Sword finger offer 65 Add without adding, subtracting, multiplying, dividing
- 剑指Offer 68 - II. 二叉树的最近公共祖先
- Shell script implements application service log warehousing MySQL
- 模拟摇杆控制舵机
- Unity-VScode-Emmylua配置报错解决
猜你喜欢
业务太忙,真的是没时间搞自动化理由吗?
Introduction and application of bigfilter global transaction anti duplication component
[OpenGL] note 29 anti aliasing (MSAA)
Naacl-22 | introduce the setting of migration learning on the prompt based text generation task
攻防世界 MISC 高手进阶区 001 normal_png
【室友用一局王者荣耀的时间学会了用BI报表数据处理】
2022-07-04: what is the output of the following go language code? A:true; B:false; C: Compilation error. package main import “fmt“ func main() { fmt.Pri
SPSS安装激活教程(包含网盘链接)
Attack and defense world misc advanced grace-50
集群的概述与定义,一看就会
随机推荐
Challenges faced by virtual human industry
攻防世界 MISC 进阶区 Erik-Baleog-and-Olaf
Introducing QA into the software development lifecycle is the best practice that engineers should follow
Logo special training camp section 1 Identification logo and logo design ideas
业务太忙,真的是没时间搞自动化理由吗?
Recommendation of mobile app for making barcode
Attack and defense world misc advanced grace-50
LOGO特训营 第五节 字体结构与设计常用技法
On-off and on-off of quality system construction
Attack and defense world misc advanced area can_ has_ stdio?
The overview and definition of clusters can be seen at a glance
攻防世界 misc 进阶区 2017_Dating_in_Singapore
剑指 Offer 68 - I. 二叉搜索树的最近公共祖先
特征缩放 标准化 归一化
Breakpoint debugging under vs2019 c release
PHP short video source code, thumb animation will float when you like it
[machine learning] handwritten digit recognition
Attack and Defense World MISC Advanced Area Erik baleog and Olaf
Duplicate ADMAS part name
常用技术指标之一文读懂BOLL布林线指标