【Redis】Redis介绍

news2024/11/25 0:22:59

文章目录

      • 1.NoSQL数据库
        • 1.1NoSQL适用场景
        • 1.2常用的NoSQL
        • 1.3Redis介绍
        • 1.4Redis的使用场景
        • 1.5Redis默认按照目录
        • 1.6Redis的启动
        • 1.7Redis是单线程+多路IO复用技术

1.NoSQL数据库

NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。 NoSQL 不依赖业务逻辑方式存储,而以简单的key-value模式存储。因此大大的增加了数据库的扩展能力。

1.1NoSQL适用场景

  • 对数据高并发的读写
  • 海量数据的读写
  • 对数据高可扩展性的

1.2常用的NoSQL

Memcache

image-20221129232228344

  • 很早出现的NoSql数据库
  • 数据都在内存中,一般不持久化
  • 支持简单的key-value模式,支持类型单一
  • 一般是作为缓存数据库辅助持久化的数据库

Redis

image-20221129232345394

  • 几乎覆盖了Memcached的绝大部分功能
  • 数据都在内存中,支持持久化,主要用作备份恢复
  • 除了支持简单的key-value模式,还支持多种数据结构的存储,比如 list、set、hash、zset等。
  • 一般是作为缓存数据库辅助持久化的数据库

MongDB

image-20221129232510784

  • 高性能、开源、模式自由(schema free)的文档型数据库
  • 数据都在内存中, 如果内存不足,把不常用的数据保存到硬盘
  • 虽然是key-value模式,但是对value(尤其是json)提供了丰富的查询功能
  • 支持二进制数据及大型对象
  • 可以根据数据的特点替代RDBMS ,成为独立的数据库。或者配合RDBMS,存储特定的数据。

1.3Redis介绍

Redis是一个开源的key_value存储系统。和Memcached类似,它支持存储从value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set–有序的集合)和hash(哈希类型)。

  • 这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。
  • 在此基础上,Redis支持各种不同方式的排序
  • 与Memcached一样,为了保存效率,数据都是缓存在内存中的
  • 区别是Redis会周期性的把更新的数据写入磁盘或者把修改操作写追加的记录文件
  • 在此基础上,Redis实现了master-slave(主从)同步

1.4Redis的使用场景

配合关系型数据库做高速缓存

  • 高频次,热门访问的数据,降低数据库IO
  • 分布式架构,做session共享

多样的数据结构存储持久化数据

image-20221129233352059

1.5Redis默认按照目录

查看默认安装目录:

  • redis-benchmark:性能测试工具,可以在自己本子运行,看看自己本子性能如何
  • redis-check-aof:修复有问题的AOF文件,rdb和aof后面讲
  • redis-check-dump:修复有问题的dump.rdb文件
  • redis-sentinel:Redis集群使用
  • redis-server:Redis服务器启动命令
  • redis-cli:客户端,操作入口

image-20221130000233986

1.6Redis的启动

前台启动(不推荐)

前台启动,命令行窗口不能关闭,否则服务器停止

image-20221130000543112

后台启动(推荐)

备份redis.conf配置文件

cp /opt/redis-6.7.2/ /myredis

将./myredis/redis.conf文件中的daemonize no修改为yes

启动redis

redis-server /myredis/redis.conf
ps -ef|grep redis

image-20221130010037094

用客户端访问:redis-cli

image-20221130010124824

Redis关闭:

单实例关闭:redis-cli shutdown

多实例关闭,指定端口关闭:redis-cli -p 6379[ port ] shutdown

image-20221130010252797

1.7Redis是单线程+多路IO复用技术

数据库相关介绍

  • 默认16个数据库,类似数组下标从0开始,初始默认使用0号库
  • 使用命令 select 来切换数据库。如: select 8
  • 统一密码管理,所有库同样密码。
  • dbsize查看当前数据库的key的数量
  • flushdb清空当前库
  • flushall通杀全部库

多路复用是指使用一个线程来检查多个文件描述符(Socket)的就绪状态,比如调用select和poll函数,传入多个文件描述符。**如果有一个文件描述符就绪,则返回,否则阻塞直到超时。**得到就绪状态后进行真正的操作可以在同一个线程里执行,也可以启动线程执行(比如使用线程池)

串行 vs 多线程+锁(memcached) vs 单线程+多路IO复用(Redis)

image-20221130023355926

redis基于reactor模式开发了网络事件处理器,这个处理器叫做文件事件处理器,file event handler。这个文件事件处理器,是单线程的,redis才叫做单线程的模型,采用IO多路复用机制同时监听多个socket,根据socket上的事件来选择对应的事件处理器来处理。

回调机制:

如果被监听的socket准备好执行accept、read、write、close等操作的时候,跟操作对应的文件事件就会产生,这个时候文件事件处理器就会调用之前关联好的事件处理器来处理这个事件。

就绪队列

多个socket可能并发的产生不同的操作,每个操作对应不同的文件事件,但是IO多路复用程序会监听多个socket,但是会将socket放入一个队列中排队,这个队列叫做就绪队列,每次从队列中取出一个socket给事件分派器,事件分派器把socket给对应的事件处理器。

一个socket的事件处理完之后,IO多路复用程序才会将队列中的下一个socket给事件分派器。文件事件分派器会根据每个socket当前产生的事件,来选择对应的事件处理器来处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/48750.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学生HTML个人网页作业作品 (服装商城HTML+CSS)

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 在线商城购物 | 水果商城 | 商城系统建设 | 多平台移动商城 | H5微商城购物商城项目 | HTML期末大学生网页设计作业,Web大学生网页 HTML&a…

RK3588平台开发系列讲解(Pinctrl篇)Pinctrl设备树介绍

平台内核版本安卓版本RK3588Linux 5.10Android12🚀返回专栏总目录 文章目录 一、 DTS介绍二、新建pinctrl三、引用pinctrl沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍pinctrl设备树的使用方法。 一、 DTS介绍 RK芯片的设备树⼀般把pinctrl节点放在soc…

元宇宙数字藏品,打造数字经济产业,实现全新业态升级

《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》提出以数字化转型整体驱动生产方式、生活方式和治理方式变革,催生新产业新业态新模式,壮大经济发展新引擎,将“虚拟现实和增强现实”列入了数字经济重点产业。 而自…

GAN生成漫画脸

最近对对抗生成网络GAN比较感兴趣,相关知识点文章还在编辑中,以下这个是一个练手的小项目~ (在原模型上做了,为了减少计算量让其好训练一些。) 一、导入工具包 import tensorflow as tf from tensorflow.keras import layersimport numpy a…

tinymce富文本编辑器做评论区

今天分享一下tinymce富文本编辑器做评论区的全过程。 文章目录一、介绍1.最终效果2.功能介绍3.主要项目包版本介绍:二、每个功能的实现1.自定义toolbar的功能区①对应的样式以及意义②对应的代码实现【忽略了一切非实现该功能的代码】2.展示、收起评论区①对应的样式…

ctf工具之:mitmproxy实践测试

1、安装居然使用的pip pip install mitmproxy 导入证书,密码为空 2、启用mitmweb pause 直接可以查看方式 搜索里输入login 对于http协议 直接看到了密码原文 3、后台日志方式 录入和回放 mitmdump -w baidu.txt pause 录制结束 mitmdump -nC baidu.txt paus…

如何设计可扩展架构

架构设计复杂度模型 业务复杂度和质量复杂度是正交的 业务复杂度 业务固有的复杂度,主要体现为难以理解、难以扩展,例如服务数量多、业务流程长、业务之间关系复杂 质量复杂度 高性能、高可用、成本、安全等质量属性的要求 架构复杂度应对之道 复杂…

MySQL备份与恢复

目录 一.数据备份的重要性 二.数据库备份的分类 2.1 物理备份 2.2 逻辑备份 2.3 完全备份(只适合第一次) 三.常见的备份方法 四.MySQL完全备份 4.1 MySQL完全备份优缺点 4.2 数据库完全备份分类 4.2.1 物理冷备份与恢复 五.完全备份 5.1 MySQ…

YOLO家族再度升级——阿里达摩院DAMO-YOLO重磅来袭

最近看到阿里达摩院发表了他们的最新研究成果,在YOLO系列上推出的新的模型DAMO-YOLO,还没有来得及去仔细了解一下,这里只是简单介绍下,后面有时间的话再详细研究下。 官方项目在这里,首页截图如下所示: 目…

ASEMI整流桥UD4KB100,UD4KB100体积,UD4KB100大小

编辑-Z ASEMI整流桥UD4KB100参数: 型号:UD4KB100 最大重复峰值反向电压(VRRM):1000V 最大平均正向整流输出电流(IF):4A 峰值正向浪涌电流(IFSM)&#xf…

堆(C语言实现)

文章目录:1.堆的概念2.堆的性质3.堆的结构4.接口实现4.1初始化堆4.2销毁堆4.3打印堆内元素4.4向上调整4.5向堆中插入数据4.6向下调整4.7删除堆顶元素4.8查看堆顶元素4.9统计堆内数据个数4.10判断堆是否为空4.11堆的构建1.堆的概念 如果有一个关键码的集合&#xff0…

【Redis】缓存更新策略

1. 缓存更新策略综述 内存淘汰 不用自己维护,利用 Redis 自己的内存淘汰机制 (内存不足时,触发策略,默认开启,可自己配置),其可在一定程度上保持数据一致性 超时剔除 给数据添加 TTL&#x…

【电力运维】浅谈电力通信与泛在电力物联网技术的应用与发展

摘要:随着我国社会经济的快速发展,我国科技实力得到了巨大的提升,当前互联网通信技术在社会中得到了广泛的应用。随着电力通信技术的快速发展与更新,泛在电力物联网建设成为电力通讯发展的重要方向。本文已泛在电力物联网系统为核…

Docker使用

xshell和xftp软件下载 链接:https://pan.baidu.com/s/1G7DIw14UvOmTwU9SwtYILg 提取码:he18 --来自百度网盘超级会员V6的分享 docker相关资料: 链接:https://pan.baidu.com/s/1VcxvuJvBIKNKnUUHPlM3MA 提取码:6w5e …

一些常见的项目管理 KPI

本文将介绍一些常见的项目管理kpi,让大家更深刻的了解其作用及所存在的问题。 一、关键绩效指标的作用 在 GPS 和其他现代导航方法出现之前,水手和探险家们只能通过星星找到正确的方向。特别是在北半球,他们利用北极星找出真正的北方方位。…

[附源码]SSM计算机毕业设计医学季节性疾病筛查系统JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Mysql高频面试题(一)

文章目录1. Mysql如何实现的索引机制?2. InnoDB索引与MyISAM索引实现的区别是什么?3. 一个表中如果没有创建索引,那么还会创建B树吗?4. B树索引实现原理(数据结构)5. 聚簇索引与非聚簇索引的B树实现有什么区…

Vector源码分析

Vector源码分析 1 Vector基本介绍与类图 Vector 类实现了一个动态数组。和 ArrayList 很相似,但是两者是不同的: Vector 是同步访问的。Vector 包含了许多传统的方法,这些方法不属于集合框架。Vector 主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的…

pytest + yaml 框架 - 1.我们发布上线了!

前言 基于 httprunner 框架的用例结构,我自己开发了一个pytest yaml 的框架,那么是不是重复造轮子呢? 不可否认 httprunner 框架设计非常优秀,但是也有缺点,httprunner3.x的版本虽然也是基于pytest框架设计&#xff…

Spring中JDK与Cglib动态代理的区别

靠Spring吃饭的小伙伴一定经常听说动态代理这个词,没错,Aop就是靠它来实现的。Spring提供了两种代理模式:JDK动态代理、Cglib动态代理,供我们选择,那他们有啥区别呢?Sping为啥不自己从中挑选一个作为代理模…