《大厂是怎么使用redis的》笔记

98 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天

为什么要使用redis

演化的路径: 数据:单表->分表->分库 数据库:单机->主从->集群 而在这个过程中,我们发现了其中的局部性原理,即在某个时间段内,某个数据的访问量是比较大的,而在其他数据的访问量是比较小的。所以我们可以将访问量大的数据放在内存中,而将访问量小的数据放在磁盘中。 这两类数据就是所谓的热数据和冷数据。而redis就是用来存储热数据的。 redis的基本特点:从内存中读取数据,速度快。同时数据可以保存在磁盘中,持久化。

redis的应用场景

  1. 连续签到 将用户简单记录保存在redis中,并让其在新一天的最后一秒过期,这样就可以实现连续签到的功能。
  2. 点赞 其实包括但不限制于点赞这种计数功能,都可以使用redis来实现。因为redis的读写速度很快,可以避免对数据的select count(*)操作。并且redis中的哈希表结构可以让我们用于抽象出一个对象的多个计数功能,比如点赞,关注者,粉丝等。
  3. 排行榜 redis中有一个相当特别的结构叫做跳表。他提供了类似二叉排序树的功能,使得插入的数据都是有序的,从而可以让我们实现排行榜这种功能。稍微注意一下,排序的是score。
  4. 消息通知 redis中的list结构可以让我们实现消息队列的功能。因为list是一个双向链表,所以可以让我们在队列的两端进行插入和删除操作。而且list的插入和删除操作都是O(1)的时间复杂度。所以可以让我们实现消息通知这种功能。注意,数据量较小的情况下他只是一个数组。
  5. 分布式锁 redis的setnx功能只在key不存在的情况下,将key的值设置为value,并返回1。如果key已经存在,则不做任何操作,返回0。所以我们可以利用这个功能来实现分布式锁。值得注意的是他有死锁的风险,所以我们一般需要在setnx的同时设置一个过期时间,这样就可以避免死锁。