从零开始Redis(一)

218 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天,点击查看活动详情

🍊作者简介:少年不想说话,努力长大

🍊往期回顾:

🍊近期目标:写完基础源码,点赞👍🏼、收藏⭐、留言📩

今天开始我们从头开始学习Redis,虽然上手Redis已经很长时间了,也在项目中做过了,但系统地学习过程还没有过,一直都是这打一枪那打一炮的,好,开始!!!

首先附上官网地址redis.io/download;下载地址:download.redis.io/releases/

什么是Redis

我们先理解一个概念,什么是Redis,看官网解释用作数据库、缓存、流引擎和消息代理的开源内存数据存储;好我们简记为某个存储结构,它的存储结构是 key-value 存储系统。我们通常称其为典型的_NoSQL_数据库,即非关系型数据库,关系型数据库和非关系型数据库差异在哪呢?

1.首先关系型数据库数据存储结构是二维的,而我们的非关系型是k-v形式的,

2.面对信息时代的爆炸,传统关系型数据库在扩容的时候采取的多半是纵向的扩展,分区or分库、分表,然后弄个好机器以便数据能快些,但无论怎么扩展好像都有上限,那我们看看非关系型的,非关系型没有和传统意义上的表结构,一切都是k-v,在同步机制下将数据尽量准确的进行所有机器之间的同步,我们需要的就是给够内存,在面对高并发的时候只需要加机器,然后通过分发机制将请求打到不同redis读服务即可;

3.为什么关系型数据库不可替代,在我们后面使用NoSQL数据库时我们会发现我们并不会用这个数据库去保存我们觉得重要的东西,或者说重要的东西我们不可以用它保存,关系型数据库不可替代主要就是其稳定性,实时性,一致性,事务(虽然Redis也支持),NoSQL不支持ACID(原子性、一致性、持久性、隔离性),我们使用NoSQL就突出一个快以及后面我们会说的集群化;

redis支持啥

下面这块我们跟着官方文档稍微走下,它支持的数据结构有 strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, and streams,支持lua脚本,支持持久化以及高可用,对于这些后面文章我会一点一点的写道,

Redis是单线程+i/o多路复用的

最后我们说下Redis是单线程还是多线程的问题,Redis在6.0之前是单线程的,单线程处理客户端的请求时包括读、解析、执行、写都由一个线程完成,Redis在6.0后的多线程主要用在网络交互、数据读写、协议解析上,最后的执行命令部分依然交由主线程来完成,之所以这么涉及估计是多线程的并发会增加系统难度,对于并发会加大系统的复杂性;所以Redis依然是单线程的,虽然有I/O多路复用,但是默认关闭,在redis.conf中设置,启动多线程:io-thread-do-reads配置项为yes;io-threads设为小于CPU核数,就可以开启了,

综上,Redis是一个高速缓存库,它存于内存中,可持久化,单线程的,对于多线程的i/o多路复用默认是关闭的好的,基础概念性的就说这么多🥗🥗🥗;

结束结束,那就🛴🛴🛴

如果对你有所帮助

点个赞呗