(一)Redis基础

(一)Redis基础

1.Redis是什么✨

Redis是一个数据库,不过与传统关系性数据库(RDBM)不同,Redis属于NoSQL,也就是非关系型数据库,它的存储结构是Key-Value。Redis的数据直接存在内存中,读写速度非常快,因此 Redis被广泛应用于缓存,消息队列、分布式锁等场景

Redis 提供了多种数据类型来支持不同的业务场景,比如 String(字符串)、Hash(哈希)、 List (列表)、Set(集合)、Zset(有序集合)、Bitmaps(位图)、HyperLogLog(基数统计)、GEO(地理信息)、Stream(流),并且对数据类型的操作都是原子性的,因为执行命令由单线程负责的,不存在并发竞争的问题。

除此之外,Redis 还支持事务 、持久化、Lua 脚本、多种集群方案(主从复制模式、哨兵模式、切片机群模式)、发布/订阅模式,内存淘汰机制、过期删除机制等等。

2.Redis为什么这么快✨✨✨

  1. Redis 基于内存,内存的访问速度比磁盘快很多
  2. Redis 内置了多种优化过后的数据类型/结构实现,性能非常高
    • 整个 Redis 就是一个全局哈希表,他的时间复杂度是 O(1),而且为了防止哈希冲突导致链表过长,Redis 会执行 rehash 操作,扩充 哈希桶数量,减少哈希冲突。并且防止一次性重新映射数据过大导致线程阻塞,采用渐进式 rehash。巧妙的将一次性拷贝分摊到多次请求过程后总,避免阻塞;
    • 对数据存储进行了优化,如压缩表,listpack,对短数据进行压缩存储,再如,跳表,使用有序的数据结构加快读取的速度。
  3. Redis对数据的操作是单线程的,不存在资源竞争问题,避免抢锁带来的性能消耗
  4. Redis使用多路复用技术,可以处理并发的连接。采用了epoll+Reactor。通过epoll,内核会一直监听多个 Socket 上的连接请求或数据请求。一旦有请求到达,就会交给 Redis 线程处理,假如说 Redis 拿到了可读写的描述符,就会执行对应的读写操作;如果 Redis 拿到了创建连接的文件描述符,就会完成连接的初始化,然后准备监听这个连接上的读写事件。这就实现了一个 Redis 线程处理多个 IO 流的效果。((四)Redis线程模型 - 一打木 (taitres.com)
  5. Redis使用resp协议,实现简单、解析快、人类可读

[!NOTE]
那既然都这么快了,为什么不直接用 Redis 当主数据库呢?主要是因为内存成本太高且 Redis 提供的数据持久化仍然有数据丢失的风险。

3.Redis 和 Memcached 的区别和共同点?✨✨

共同点

  1. 都是基于内存的数据库,一般都用来当做缓存使用;
  2. 都有过期策略;
  3. 两者的性能都非常高。

区别

  1. 数据类型:Redis 支持更丰富的数据类型(支持更复杂的应用场景)(String、Hash、List、Set、ZSet),而 Memcached 只支持最简单的 key-value 数据类型;
  2. 数据持久化:Redis 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用,而 Memcached 没有持久化功能,数据全部存在内存之中,Memcached 重启或者挂掉后,数据就没了;
  3. 集群模式支持:Redis 原生支持集群模式,Memcached 没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据;
  4. 特性支持:Redis 支持发布订阅模型、Lua 脚本、事务等功能,而 Memcached 不支持。并且,Redis 支持更多的编程语言;
  5. 过期数据删除:Memcached 过期数据的删除策略只用了惰性删除,而 Redis 同时使用了惰性删除与定期删除。

4.为什么要用 Redis?(为什么用 Redis 作为 MySQL 的缓存?)✨

**为什么要用 Redis:**访问速度快,高并发,功能全面(Redis 除了可以用作缓存之外,还可以用于分布式锁、限流、消息队列、延时队列等场景)

为什么用 Redis 作为 MySQL 的缓存:访问速度快,高并发(单台设备的 Redis 的 QPS(Query Per Second,每秒钟处理完请求的次数) 是 MySQL 的 10 倍,Redis 单机的 QPS 能轻松破 10w,而 MySQL 单机的 QPS 很难破 1w)

5.什么是 Redis Module?有什么用?

通过 Module 来扩展其功能以满足特殊的需求。这些 Module 以动态链接库(so 文件)的形式被加载到 Redis 中

我们每个人都可以基于 Redis 去定制化开发自己的 Module,比如实现搜索引擎功能、自定义分布式锁和分布式限流。

如:

  • 13
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值