首页 > 数据库 > Redis > 正文

redis 笔记记录-概述

发布: 2023-08-08 16:24:05
转载
1228 人浏览过

redis介绍

Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串哈希表列表集合有序集合位图hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区

Redis到底有多快

Redis采用的是基于内存的采用的是单进程单线程模型的 KV 数据库由C语言编写,官方提供的数据是可以达到100000+的QPS(每秒内查询次数)。

redis 笔记记录-概述

横轴是连接数,纵轴是QPS

我们看着官方给出的数据,发现是真的快;作为一个有梦想的程序员,必须得知道它为啥那么快,你说对不对!

那么我在网页查阅过一些资料,大致的情况如下:

  • 完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);

  • 数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的;

  • 采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗;

  • 使用多路I/O复用模型,非阻塞IO;

  • 使用底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样,Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求;

多路I/O复用模型是利用 select、poll、epoll 可以同时监察多个流的 I/O 事件的能力,在空闲的时候,会把当前线程阻塞掉,当有一个或多个流有 I/O 事件时,就从阻塞态中唤醒,于是程序就会轮询一遍所有的流(epoll 是只轮询那些真正发出了事件的流),并且只依次顺序的处理就绪的流,这种做法就避免了大量的无用操作。

总结起来其实就三个点:

  1. 使用 epoll 网络模型,采用单线程处理请求。

  2. 使用符合需求的各种高性能数据结构。

  3. redis 使用内存操作;并使用C语言编写。

出发点

本次系列的文章不重点讨论 epoll 网络模型,主要记录学习redis数据结构的原理。让我们知道 redis 为什么数据处理得非常快。

  1. redis 的 string 实现原理

  2. redis 的 list  实现原理

  3. redis 的 set 实现原理

  4. redis 的 sorted set 实现原理

  5. redis 的 hash 实现原理

  6. 其他数据类型的介绍

以上是redis 笔记记录-概述的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:Golang菜鸟
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!