Redis基础

**Redis为什么快?** 1.官方使用基准测试的结果是,单线程的 Redis 吞吐量可以达到 10W/每秒,数据存放在内存中,内存的读写速度是磁盘(数据库)的一百倍左右。 2.用C语言实现,C语言更底层,执行速度相对会更快。 使用了多路复用,Redis是单线程的,但内部使用了IO多路复用提高性能。 3.作者对代码的精打细磨,曾经有人评价Redis是少有的集性能和优雅于一身的开源代码 *

Ethan··1 分钟
0 阅读

Redis为什么快?

1.官方使用基准测试的结果是,单线程的 Redis 吞吐量可以达到 10W/每秒,数据存放在内存中,内存的读写速度是磁盘(数据库)的一百倍左右。

2.用C语言实现,C语言更底层,执行速度相对会更快。 使用了多路复用,Redis是单线程的,但内部使用了IO多路复用提高性能。

3.作者对代码的精打细磨,曾经有人评价Redis是少有的集性能和优雅于一身的开源代码

redis是单线程还是多线程?

  1. Redis 单线程指的是「接收客户端请求->解析请求 ->进行数据读写等操作->发送数据给客户端」这个过程是由一个线程(主线程)来完成的,这也是我们常说 Redis 是单线程的原因。
  2. 但是,Redis 程序并不是单线程的,Redis 在启动的时候,是会启动后台线程(BIO)的,所以为了提高网络 I/O 的并行度,Redis 6.0 对于网络 I/O 采用多线程来处理。但是对于命令的执行,Redis 仍然使用单线程来处理,所以大家不要误解 Redis 有多线程同时执行命令。

Redis 支持哪几种数据类型?

  1. 1.String 类型的应用场景:缓存对象、常规计数、分布式锁、共享 session 信息等。
  2. 2.List 类型的应用场景:消息队列(但是有两个问题:1. 生产者需要自行实现全局唯一 ID;2. 不能以消费组形式消费数据)等。
  3. 3.Hash 类型:缓存对象、购物车等。
  4. Set 类型:聚合计算(并集、交集、差集)场景,比如点赞、共同关注、抽奖活动等。
  5. 4.Zset 类型:排序场景,比如排行榜、电话和姓名排序等。
  6. 5.Stream(5.0 版新增):消息队列,相比于基于 List 类型实现的消息队列,有这两个特有的特性:自动生成全局唯一消息ID,支持以消费组形式消费数据。

Redis 后续版本又支持三种数据类型,它们的应用场景如下:

  1. BitMap(2.2 版新增):二值状态统计的场景,比如签到、判断用户登陆状态、连续签到用户总数等;
  2. HyperLogLog(2.8 版新增):海量数据基数统计的场景,比如百万级网页 UV 计数等;
  3. GEO(3.2 版新增):存储地理位置信息的场景,比如滴滴叫车;
分享:

评论

评论区加载中,请稍候…