Redis1

avatar
作者
筋斗云
阅读量:0

Redis的优势

1.性能极高

2.数据类型丰富

3.支持数据的持久化

4.支持数据备份

Redis除了能做什么?

分布式缓存、内存存储和持久化、分布式锁、排行榜、消息队列.....

Redis怎么实现消息队列?

Redis5.0新增的数据结构Stream可以用来做消息队列,不过和专业的消息队列相比还有很多欠缺。

Redis数据类型

1.String(字符串)

2.List(列表)

3.Hash(哈希表)

4.Set(集合)

5.Zset(sorted set:有序集合)

6.GEO(地理空间)

7.HyperLogLog(基数统计)

8.bitmap(位图)

9.bitfield(位域)

10.Stream(流)

最后两种不常见

Redis实现统计网站UV?

UV:独立访客,一般理解为客户端IP,需要去重

HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定且是很小的

Redis实现一个排行榜?

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。 不同的是每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序。可以用Zset实现排行榜。

Redis单线程模型

Redis 是跑在单线程中的,所有的操作都是按照顺序线性执行的,但是由于读写操作等待用户输入或输出都是阻塞的,所以 I/O 操作在一般情况下往往不能直接返回,这会导致某一文件的 I/O 阻塞导致整个进程无法对其它客户提供服务,而 I/O 多路复用就是为了解决这个问题而出现

所谓 I/O 多路复用机制,就是说通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或写就绪),能够通知程序进行相应的读写操作。这种机制的使用需要 select 、 poll 、 epoll 来配合。多个连接共用一个阻塞对象,应用程序只需要在一个阻塞对象上等待,无需阻塞等待所有连接。当某条连接有新的数据可以处理时,操作系统通知应用程序,线程从阻塞状态返回,开始进行业务处理。Redis基于Reactor模式开发了网络事件处理器,这个处理器被称为文件事件处理器。它的组成结构为4部分:多个套接字、IO多路复用程序、文件事件分派器、事件处理器。因为文件事件分派器队列的消费是单线程的,所以Redis才叫单线程模型

Redis6.0之前为什么不使用多线程依旧很快?

1.基于内存操作

2.数据结构简单

3.多路复用和非阻塞I/O

4.避免上下文的切换

Redis6.0之前性能瓶颈不在CPU

Redi6.0之后为何引入了多线程?

提高网络IO读写性能

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!