技术资讯

为什么要誓死学好 Redis ?

TIME:2018-03-31


一个节日的晚上,那些加班的程序员在做什么?

每当过节的时候,我们在电脑边买买买,在视频上刷剧刷剧刷剧。当我们看的很爽的时候,买的很欢乐的时候,你一定不知道程序员在背后一直为你做着技术后盾。

我们最大的心愿就是让你玩的爽、看的多,那么在今天这种片子数不胜数、商品越来越多的网站上,要想抗住用户量,不让服务器挂掉,是要靠技术的。

什么技术让程序员们如此期待呢?

这就是 Redis 缓存技术。当用户量不大的时候,我们直接连数据库一点问题都没有。

但是随着人数越来越多,用户量也日趋增多,随随便便就100万  QPS(每秒内查询次数),只有能抗住 QPS,我们才会一直使用这个软件。

传统的数据库是很难实现的,这是因为关系数据库是有资源池的,但是资源池本事又有限,只要超过资源池的访问,数据库服务器就会挂掉。

小何是我们这里的程序员,每当节假日,他基本上会忙的很晚,他只在做一件事 — 监控用户量。

这个监控倒不是监控隐私信息,而是监控数据量大的时候,服务器的负载和内存是否能抗住。

其实当我问他现在累不累,他闷骚的笑容和日渐肥胖的身材告诉我,现在他很舒服了。

小何回想当年,每次我们公司搞秒杀、促销的时候,那叫一个痛苦啊。不是哪个机房的数据库挂掉了,就是线程阻塞了,整个公司程序员总是在不断重启中度过。

导致我们只能使用小米之前经常用的排队策略(顾名思义,就是限制了用户量,让一部分先进来的人抢商品,其他人就在外面等,里面哪个人抢完了以后,出来一个,排队的放一个)

很悲催吧,这还不算。还有更多的无奈,比如用户小手一抖,买了,结果没付款,你想到的意外发生了,服务器挂了,用户付不了钱,各种压力吃给客服,导致客户小妹妹压力山大啊。

我们想这样子不行啊,于是我们决定使用 Redis

那么,为什么我们选 Redis 呢?

首先 Redis 号称是史上最快的数据库,而且不需要重新改变原来的关系数据库(我们原来的数据库是 Mysql)。

其次 Redis 可以使用事务功能,不要小看事务功能,他能保证用户一系列的业务流程统一。

再次我们为了保证网络带宽,使用了 pipeline(流水线)功能。这个功能可以一次性把一堆命令一次性传到 Redis,减少了网络开销。

最后 Redis 的持久化,这是非常重要的机制,虽然 Redis 快,但是它的快是取决于它运行在内存中,一旦发生意外或者断电,就可能丢失重要信息。这个时候,持久化就起到作用了。

上了 Redis 后我们很快发现,原本只是为了减少客服压力的 Redis,后来支撑了我们业务的主要缓存架构,成为项目流程中重要的一环。

在《Redis 入门到分布式实践》中讲解如何用正确的姿势来使用 Redis,根据公司开发经验,我们团队会为大家讲解如何使用 Redis 以及高级功能;

具体安排:

  1. 为什么我们要使用 Redis :这里将系统的介绍 Redis 是什么,讲述他的八大互联网公司关注的功能;

  2. API 的理解和使用: Redis 的 API 有7种数据类型,这七种数据类型可以帮助你更好的使用不同的业务场景;

  3. 如何使用 Redis 客户端: Redis 为各位准备好了各种语言的客户端。本次将讲解 Java 和 Python 常用的 Redis 客户端的使用,帮助你先会使用它。

  4. Redis 的高级功能:你不单单要使用 Redis,还要了解 Redis 的高级功能,这些功能针对不同的业务,有更好的支持,帮助你更加高效的使用redis。

  5. 正确认识 Redis 持久化和开发运维问题:这里将为各位介绍 Redis 最重要的持久化,不至于丢失数据和日常开发运维最常用的一些问题。

  6. 高可用运维必学的 Redis 复制:我们经常遇到不同数据库的信息传递,保证数据的一致性,那么这个时候,Redis 复制功能,在生产环境显得特别重要。

  7. Redis Sentinel 部署和运维:生产环境中当然不可能只有一台服务器,为了保证数据的完整性,我们需要对数据备份。这样在服务器挂了以后,能够快速恢复。

  8. Redis Cluster —分布式解决方案:这是官方为我们提供的分布式的架构,能够让你根据不同的数据,按一定的规则分配不同的机器。同时当数据量超过服务器硬盘的时候,我们可以再次扩容服务器。

  9. 缓存设计与优化:大家知道对于大量的数据查询,我们不直接查询数据库,而是让 Redis 查询后,客户端请求时先查询缓存,不存在的时候再去查数据库。

    但是你会发现这个设计其实是有问题的,当出现并发的时候,这个查询其实是很慢的。

    上面的设计能解决单一请求,却不能并发,我们有一套正确的加锁处理,能够帮助你在高并发的时候如何提升效率的讲解。

这还不够,我们日常使用的是 Liunx 系统的运维,我们会教你如何正确的方法运维攻略;甚至系统的讲解如何正确的配置  Redis 集群和分布式方案。

之所以要讲解一整套 Redis 攻略,我发现很多新学 Redis 的朋友会误入歧途,总是以为 Redis 只要学好如何使用就好了。

其实 Redis 的操作是非常简单的,如果你阅读完如何使用 Redis 客户端,你会发现 Redis 的使用实在是 so easy。

上一篇

C#的优势

下一篇

计算机视觉的广泛应用:网络压缩、视觉问答、可视化、风格迁移等