前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Redis 为什么好用?

Redis 为什么好用?

作者头像
CSDN技术头条
发布于 2019-11-19 07:36:17
发布于 2019-11-19 07:36:17
6320
举报
文章被收录于专栏:CSDN技术头条CSDN技术头条

一、导言

如果你从来没使用过 Redis 数据库,那你肯定会问,为什么我们要学 Redis数据库,我只使用 MySQL 或 Oracle 就够了。其实 Redis 虽叫数据库,可又不是传统意义上的关系型数据库,Redis 是一个高性能的 Key-value 数据库。

首先我们先来讲一下 Redis 的历史。Redis 其实是作者 Salvatore Sanfilippo 为了解决实际问题而创造出来的。当时作者 Salvatore 有这么一个需求,就是多个网站不断向服务器发送页面,而服务器需要为每个网站保存一定数量的最新页面记录,同时通过网页将数据实时给用户看到。

但是无论 Salvatore 如何优化,都很难在关系数据库里让小虚拟机处理大负荷的负载。最终他打算自己写一个内存数据库,能对列表的两端执行常数时间复杂度的弹出和推入操作,并加上子进程的持久化操作,于是 Redis 就诞生了。

到了今天,Redis 已经进入了成熟期。数以千计的开发者都在开发和使用这个数据库,Redis 拥有非常完善的文档。我记得第一次使用 Redis,是为了在保存有数十百万用户的关系数据库里对某个条件进行查询。大家知道,要想在几百万用户中找到某条数据,是很难通过关系数据库在十几秒查询到的。于是我选择了 Redis,在不断优化后每次操作可以控制在 1 秒钟甚至更短,带给我相当大的震撼。

本教程不但教给你一些基本的使用,同时也会根据我多年总结的技巧解决日常生产环境上优化和排错的问题。特别是后期的数据库优化和集群的讲解,希望对各位进行 Redis 开发有一定帮助。

二、认识 Redis

在 Redis 之前,很多互联网公司会使用 MySql + Memcached 架构,这个架构虽然适合于海量数据存储,但随着业务的增加,会出现很多问题,例如,MySQL 数据库经常拆表,导致 Memcached 也不断扩容;同步问题;命中率低,导致直接穿透 Memcached 进入 DB 查询,DB资源池是有限的,进而宕机。这些问题都会导致Memcached其实并不好用。

Redis 就在这种时代背景中产生,你会发现 Memcached 遇到的问题都被 Redis 给解决了。如果你用过 Memcached,你就会感受到 Redis 绝对不是简单的 Key-value 数据,还有 list、set、哈希等各种数据类型的存储,同时支持冷热备份和主从复制,不但解决了数据库的容错,还能轻易地将数据分布到多个 Redis 实例中。

那么 Redis 有哪些具体特性呢?大致可分为如下八大特性。

特性一,速度极快。官方给出的数据是 10 万次 ops 的读写,这主要归功于这些数据都存在于内存中。由于 Redis 是开源的,当你打开源代码,就会发现 Redis 都是用 C 语言写的,C 语言是最接近计算机语言的代码,而且只有区区 5 万行,保证了 Redis 的速度。同时一个 Redis 只是一个单线程,其真正的原因还是因为单线程在内存中是效率最高的。

特性二,持久化。Redis 的持久化可以保证将内存中的数据每隔一段时间就保存于磁盘中,重启的时候会再次加载到内存。持久化方式是 RDB 和 AOF。

特性三,支持多种数据结构分别支持哈希、集合、BitMaps,还有位图(多用于活跃用户数等统计)、HyperLogLog(超小内存唯一值计数,由于只有 12K,是有一定误差范围的)、GEO(地理信息定位)。

特性四,支持多种编程语言。支持 Java、PHP、Python、Ruby、Lua、Node.js。

特性五,功能丰富。如发布订阅、Lua 脚本、事务、Pipeline(管道,即当指令到达一定数量后,客户端才会执行)。

特性六,简单。不依赖外部库、单线程、只有 23000 行 Code。

特性七,主从复制。主节点的数据做副本,这是做高可用的基石。

特性八,高可用和分布式。Redis-Sentinel(v2.8)支持高可用,Redis-Cluster(v3.0)支持分布式。

那么 Redis 用在哪些场景呢?

Redis 最大的作用是增加你原来的访问性能问题,试想如果项目已经搭建好,这个项目一般是不太可能更换的。但是 Redis 独特的存在是只需要增加一层,把常用的数据存放在 Redis 即可。你在开发环境中使用 Redis 功能,但却不需要转到 Redis。

无论是什么架构,你都可以将 Redis 融入项目中来,这可以解决很多关系数据库无法解决的问题。比如,现有数据库处理缓慢的任务,或者在原有的基础上开发新的功能,都可以使用 Redis。接下来,我们一起看看 Redis 的典型使用场景。

1. 缓存系统。这是 Redis 使用最多的场景。Redis 能够替代 Memcached,让你的缓存从只能存储数据变得能够更新数据,因此你不再需要每次都重新生成数据。毫无疑问,Redis 缓存使用的方式与 Memcached 相同。网络中总是能够看到这个技术更新换代,Redis 的原生命令,尽管简单却功能强大,把它们加以组合,能完成的功能是无法想象的。当然,你可以专门编写代码来完成所有这些操作,但 Redis 实现起来显然更为轻松。

2. 计数器。如转发数、评论数,有了原子递增(Atomic Increment),你可以放心的加上各种计数,用GETSET重置,或者是让它们过期。目前新浪是号称史上最大的 Redis 集群。

比如,你想计算出最近用户在页面间停顿不超过 30 秒的页面浏览量,当计数达到比如 10 时,就可以显示提示。再比如,如果想知道什么时候封锁一个 IP 地址,INCRBY命令让这些变得很容易,通过原子递增保持计数;GETSET用来重置计数器;过期属性用来确认一个关键字什么时候应该删除。

3. 消息队列系统。虽然 Kafka 更强,但是简单的可以使用 Redis。运行稳定并且快速,支持模式匹配,能够实时订阅与取消频道。

Redis 还有阻塞队列的命令,能够让一个程序在执行时被另一个程序添加到队列。你也可以做些更有趣的事情,比如一个旋转更新的 RSS Feed 队列。

4. 排行榜及相关问题。实际就是一种有序集合。对于 Redis 来说,如果你要在几百万个用户中找到排名,其他数据库查询是非常慢的,因为每过几分钟,就会有几百万个不同的数据产生变化,但是 Redis 却可以轻松解决。

排行榜(Leader Board)按照得分进行排序。ZADD 命令可以直接实现这个功能,而 ZREVRANGE 命令可以用来按照得分获取前 100 名的用户,ZRANK 可以用来获取用户排名,非常直接而且操作容易。

5. 社交网络。Redis 可以非常好地与社交网络相结合,如新浪微博、Twiter 等,比如 QQ 和用户交互的时候,用户和状态消息将会聚焦很多有用的信息,很多交互如实时聊天就是通过 Redis 来实现的。

6. 按照用户投票和时间排序。Reddit 的排行榜,得分会随着时间变化。LPUSH 和 LTRIM 命令结合运用,把文章添加到一个列表中。一项后台任务用来获取列表,并重新计算列表的排序,ZADD 命令用来按照新的顺序填充生成列表。列表可以实现非常快速的检索,即使是负载很重的站点。

7. 过期项目处理。通过 Unix 时间作为关键字,用来保持列表能够按时间排序。对 current_time 和 time_to_live 进行检索,完成查找过期项目的艰巨任务。另一项后台任务使用 ZRANGE...WITHSCORES 进行查询,删除过期的条目。

8. 实时系统。使用位图来做布隆过滤器,例如实现垃圾邮件过滤系统的开发变的非常容易。

综上所述, Redis 的应用是非常广泛的,而且在实际使用中是非常有价值的。你可以让网站向 100 万用户推荐新闻、可以实时显示最新的项目列表、在游戏中实时获得排名、获得全球排名等等。Redis 的出现,解决了传统关系数据库的短板,让开发变的更加简单和高效,大大提高了开发效率,也在用户体验上获得更加实时的体验。随着 Redis 的使用越来越广泛,将会有更多的开发者加入 Redis 的使用和开发上来。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GitChat精品课 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
不吹不黑,以数据还原中国联通“净利润暴涨”的真相
企业经营从大的层面只有两个方面:开源和节流。净利润的增长是发生在哪个环节,这反映出一个企业的经营状况——增长的利润是赚出来的,还是省出来的?“赚出来”是开拓了新市场,还是压榨了老市场?“省出来”是提升了效率,还是节省了开支?
悲了伤的白犀牛
2021/03/30
3160
不吹不黑,以数据还原中国联通“净利润暴涨”的真相
运营商未来看数字业务,数字业务未来看云计算,战争已经打响……
中国电信营业收入为2402.2亿元,同比增长10.4%,扣非净利润为183.8亿元,同比增长12.1%;
悲了伤的白犀牛
2022/12/14
4140
一年骤增 141 亿元:天翼云 2021 年收入 279 亿
2022年3月17日,中国电信的《2021 年年度报告》显示:2021年营收4341.6亿元,同比增长11.3%,归属于上市公司股东的净利润为259.5亿元。 产业数字化加速发展,收入规模接近千亿元 2021 年,中国电信产业数字化业务收入 989 亿元。 中国电信深度融合数字经济要素与实体经济,以“融云、融安全、融 5G、融数、融智”为抓手,打造综合智能的场景化解决方案,积极赋能传统产业转型升级。 中国电信 5G 定制网广泛服务于各垂直行业, 创新商业模式丰富落地;天翼云全面升级为分布式云,数字化平台加
云头条
2022/03/18
1K0
​三季度成绩单揭晓,中国移动正在拉开差距!但仍存一隐忧!
近日,三大运营商先后发布了三季度财报,整体上,通信运营行业仍然延续自2020年最后一季开始的V型反转趋势,从宏观层面,三大运营商营业收入以三倍GDP增速的速度在增长,利润增速更为可观。从微观层面,三家的收入结构都在持续优化,“第二曲线”业务的收入占比在持续增长。
悲了伤的白犀牛
2022/12/14
1670
三大运营商还远没到乐观的时候!
中国电信营业收入为2402.2亿元,同比增长10.4%,扣非净利润为183.8亿元,同比增长12.1%;
悲了伤的白犀牛
2022/12/14
2170
中国软件营收 103.5 亿、净利润 0.76 亿:其中麒麟软件收入 11.34 亿、净利润 2.68 亿
2022年4月20日,中国软件发布的《2021年年度报告》显示:2021年营收103.5亿元,同比增39.73%;净利润7558万元,同比增10.77%。 营收构成: 中国软件持有麒麟软件 40.2499% 股份,麒麟软件 2021 年营收 11.34 亿元,同比增长 85%;实现利润总额 2.75 亿元,同比增长 46%;实现归属于母公司净利润 2.68 亿元,同比增长 63%。 长城软件为中国软件全资子公司,截至 2021 年 12 月 31 日,长城软件总资产 12.44 亿元,净资产 4.
云头条
2022/04/21
8700
中国软件营收 103.5 亿、净利润 0.76 亿:其中麒麟软件收入 11.34 亿、净利润 2.68 亿
中国电信半年业绩拔得头筹,移动、联通会输吗?
日前,中国电信预先披露2021年上半年业绩预告。预计2021年1- 6月营业收入约为人民币2136.06亿元-2184.17亿元,同比增长约为11%至13.5%;归属于母公司股东的净利润约为人民币175.76亿元-178.55亿元,同比增长约为26%至28%;扣除非经常性损益后归属于母公司股东的净利润约为人民币160.66亿元-163.55亿元,同比增长约为11%至13%。
悲了伤的白犀牛
2021/07/30
3750
吃瓜吃瓜!锐捷网络上市前夕被Cadence给告了
公司在交换机、无线产品、云桌面、IT 运维管理等多个领域位居市场前列。根据IDC数据,2019年及2020年,公司在中国以太网交换机市场占有率排名第三;2020年及2021年1-6月,公司在中国企业级WLAN市场占有率排名第三,其中Wi-Fi 6产品出货量连续两年排名第一;2015-2020年,公司连续6年在中国企业级终端VDI市场占有率排名第一;2019年,公司在中国IT基础设施运维软件市场占有率排名第一。
用户6874558
2023/02/15
8270
吃瓜吃瓜!锐捷网络上市前夕被Cadence给告了
芯原股份:2022年净利润为7381.43万元,同比增长455.31%
3月24日晚,芯原股份发布2022年年度报告,公司在报告期内实现营业收入26.79亿元,同比增长25.23%;归母净利润为7381.43万元,同比增长455.31%;扣非后净利润为1329.06万元,去年同期为亏损4682.98万元。
芯智讯
2023/04/11
3600
芯原股份:2022年净利润为7381.43万元,同比增长455.31%
韦尔股份上半年净利润同比暴跌93.25%
8月14日晚间,国产图像传感器(CIS)大厂韦尔股份公布了2023年上半年业绩,实现营业收入88.58亿元,同比下滑19.99%;归属于上市公司股东的净利润为1.53亿元,同比暴跌93.25%;实现扣非净利润-7896.13万元,同比暴跌105.44%。
芯智讯
2023/09/07
2050
韦尔股份上半年净利润同比暴跌93.25%
年报解读|通信运营商实现V型反转关键看新兴业务
2020年3月,我国三大电信运营商陆续公布2019年年报。从年报公布的数据来看,三大运营商收入处于低速增长或负增长。2019年,中国移动实现营收7459.17亿元,同比增长1.2%,其中通信服务收入达到人民币6744亿元,同比增长0.5%。中国电信2019年实现经营收入3757.34亿元,同比下降0.4%,其中通信服务收入达到人民币3576亿元,同比增长2.0%。中国联通2019年实现营收2905.15亿元,同比下降0.12%,其中服务收入达到2644亿元,同比上升0.3%。
灯塔大数据
2020/05/22
5820
董事长被撤销政协委员资格,这家数据安全公司市值蒸发40亿元
众所周知,公司创始人的个人品牌对公司品牌的加成和影响力越来越高。从格力的董明珠,腾讯的马化腾,小米的雷军,可以看出在企业品牌营销中核心管理层的个人影响力越来越凸显,尤其是作为品牌的灵魂人物,这一点体现得尤其突出。
数据猿
2023/03/03
4820
董事长被撤销政协委员资格,这家数据安全公司市值蒸发40亿元
神舟软件抢登科创板,他会是站在光背后的英雄吗?
航天业便是最接近那片深蓝的行业,这也是中国一直支持的重点行业。“2021年中国全年航天发射次数达55次,位居世界第一!”。航天工程、航天机电、航天动力、航天电子、中国卫星等航天领域的公司均已经成功上市。作为航天企业理应是“风光无限”,可是北京神舟航天软件技术股份有限公司(以下简称:神舟软件),却一直默默存在于航天企业的背后。
数据猿
2022/09/04
5620
神舟软件抢登科创板,他会是站在光背后的英雄吗?
运营商最大的优势和责任:安全!三家都在砸钱布局!
近日,三大运营商先后发布了年中业绩报告,最大的变化就是,移动流量业务收入陷入“低速增长”、产业数字化业务收入在“放量增长”。
悲了伤的白犀牛
2022/12/14
3870
腾讯的2020年:营收近5000亿,员工均薪81万
3月24日下午,腾讯发布2020年财报。财报显示,腾讯当年总营收4820.64亿元,同比增长28%,超过市场预期的4804.01亿元;实现归母净利润1598.47亿元,同比增长71%。
用户10106350
2022/10/28
9720
ODM大厂龙旗科技IPO成功过会:三年营收超700亿,小米是大股东!
8月23日,上交所上市审核委员会2023年第77次审议会议结果公告显示,上海龙旗科技股份有限公司(以下简称“龙旗科技”)在沪市主板首发上市(IPO)申请获得了上市委会议通过。
芯智讯
2023/09/07
8410
ODM大厂龙旗科技IPO成功过会:三年营收超700亿,小米是大股东!
利润大跌66.29%!是什么导致了深信服营收和利润的“二元背离”?
近期,深信服科技股份有限公司(以下简称“深信服”)发布了2021年年报。根据年报数据,2021年深信服营收68.05亿元,同比增长24.67%;净利润2.73亿元,同比下降66.29%。其中扣非净利润1.31亿元,同比下降80.66%。
数据猿
2022/05/19
7740
利润大跌66.29%!是什么导致了深信服营收和利润的“二元背离”?
谁将成为中国的“甲骨文”?
近年来,在国内数字化转型以及信创建设持续推进的大背景下,我国信创产业发展持续加速,数据库国产化替代速度加快,行业迎来前所未有的发展机遇。
数据猿
2023/03/03
5550
谁将成为中国的“甲骨文”?
中国移动的利润都去哪了?
10月20日,中国移动发布了前三季度业绩报告,前三季度营业收入7235亿元,同比增长11.5%。净利润为985亿元,同比增长13.3%,净利润率为13.6%。其中,主营业务收入为6201亿元,同比增长8.3%,其他业务收入为1034亿元,同比增长36.4%。
悲了伤的白犀牛
2022/12/14
3820
中国移动的利润都去哪了?
非研发减少 4000 人、研发增 2000 人;营收降 2546 亿、净利润增 491 亿
2022年3月28日,华为发布的《2021年年度报告》显示:2021年营收6368亿元,同比减少2546亿元;净利润1137亿元,同比增加491亿元。 华为近五年财务数据: 运营商业务收入2815亿元,占总收入百分比44.2%,海外收入占比超过50%;企业业务收入1024亿元,占比16.1%,其中新兴业务收入增长超过30%;消费者业务2434亿元,占比38.2%;其他收入占比1.5%。 各业务近三年营收数据: 另外华为云2021年营收201亿元,2020年营收150亿元。 2021年员工总数量 1
云头条
2022/03/29
2040
推荐阅读
相关推荐
不吹不黑,以数据还原中国联通“净利润暴涨”的真相
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档