Redis的一点入门了解

news2024/11/30 2:33:09

Redis

NoSql概述

1、单机MySQL的时代

90年代,一个网站的访问量一般不会太大,单个数据库完全足够应付,技术上更多的会去使用静态页面html,对此服务器压根没多少压力;

但即使在这样的情况下,也会存在着一些当时难以解决的问题:

  1. 数据量如果太大,一个机器无法承受
  2. 数据的索引太多,一台机器内存的无法处理
  3. 访问量如果过多,一台服务器也无法承受

在当时,如果有三种情况的其中一种,那么就面临会崩溃的结局。

  1. Memcached(缓存) + MySQL + 垂直拆分(读写分离)

网站80%的情况都是在读数据,每一次都要去查询数据库的话就会非常麻烦,所以如果想要减轻数据库的压力,就可以选择使用缓存来保证效率。

发展历程:优化数据库和索引 ->文件缓存(IO) -> Memcached(当时最热门的技术)

  1. 分库分表 + 水平拆分 +MySQL集群

在这一时期,技术和业务都在急速发展,对人的要求也越来越高

本质上来说还是:数据库的读和写的问题

早些年MySAM:锁表,十分影响效率,高并发下会出现严重的锁问题

转战Innodb:行锁

慢慢的就开始使用分库分表来解决写的压力!MySQL在这是就已经推出了表分区,但并没有引起太多的重视

MySQL的集群,非常好的满足了那个时代的所有需求,成为最优解。

  1. 当今时代
  1. -2020这十年间,世界飞速发展,已经发生了翻天覆地的变化;(定位,音乐,热门榜单也是一种数据)

在这时的MySQL等关系型数据库就已经不够用了,数据量太大太大,变化也非常非常快

MySQL有的使用它来存储一些比较大的文件,博客以及图片,数据库的表一旦变大,效率就急剧下降。如果有一种数据库专门去处理这些数据,MySQL的压力就会得到减轻(怎样去解决这个问题变成当务之急),而在大数据的IO压力下,数据库的表几乎没法承担更大的数据。

目前一个基本的互联网项目需要具备的东西:

为什么要用NoSQL

用户的个人信息,社交网络,地理位置……等,用户自己产生的数据,用户日志等数据在爆发式的增长,这时候我们就需要NoSQL数据库了,因为它能很好的处理以上情况,具体怎么解决,继续往下看。

什么是NoSQL

NoSQL = Not Only SQL(不仅仅是SQL 而不是说非SQL!)

关系型数据库基本都是:表、行、列组成

泛指非关系型数据库的,随着web2.0互联网的诞生,传统的关系型数据库很难对付web2.0时代,尤其是超大规模的高并发的社区,渐渐暴露出很多难以克服的问题,而NoSQL在当今大数据环境下发展的十分迅速,Redis是发展的最快的,而且是我们当下必须要掌握的一门技术。

很多的数据类型-用户的个人信息、社交网络、地理位置等,这些数据类型的存储不需要一个固定的格式,也不需要多余的操作就可以横向扩展。Map<String, Object>使用键值对来控制。

NoSQL特点

解耦

  1. 方便扩展(数据之间没有任何关系,可以直接扩展数据)
  2. 大数据量的情况下也可以高性能运作(Redis一秒可以写8万次,可以读取11万次,NoSQL的缓存记录级,是一种细粒度的缓存,性能会比较高)
  3. 数据类型是多样性的(不需要通过实现设计数据库再使用,只要做到随去随用,如果数据量非常大的表,很多情况下就很难设计一个合格的数据库)
  4. 传统RDBMS和NoSQL

传统的RDBMS

- 结构化组织

- SQL

- 数据和关系都存在单独的表中

- 存在操作语言和数据定义语言

- 非常严格的一致性

- 基础的事务

- ……

NoSQL

- 不仅仅是数据

- 没有固定的查询语言

- 键值对存储,列存储,文档存储,图形数据库(社交关系)

- 最终一致性

- CAP定理和BASE(狡兔三窟)

- 高性能、高可用、高可扩

- ……

扩展:3V+3高

大数据时代的3V:主要是描述问题的

  1. 海量Volume
  2. 多样Variety
  3. 实时Velocity

大数据时代的3高:主要是对程序的要求

  1. 高并发
  2. 高可扩
  3. 高性能

实际上,在公司中去工作的时候,一般都是:NoSQL + RDBMS一同使用,这样子的状态才是最强的状态,阿里巴巴的架构演进就是如此

技术没有高低之分,贵贱之别,只有正确的结合各个技术的闪光点,才能发挥出最大作用。

NoSQL的四大分类

KV键值对:

新浪-Redis

美团-Redis + Tair

阿里、百度-Redis + memecache

文档型数据库(bson格式和json一样):

MongoDB(一般必须要掌握)

MongoDB是一个基于分布式文件存储的数据库,C++编写,主要用来处理大量的文档

MongoDB是一个介于关系型数据库和非关系型数据库中间的产品,MongoDB是非关系型数据库中,种类最丰富,最像关系型数据库的

ConthDB

列存储数据库

HBase

分布式文件系统

图关系数据库:

他不是存图片的,存的是关系,比如:朋友圈社交图,广告推荐

例如:Neo4j, infoGrid

Redis入门

概述

Redis是什么?

Redis(Remote Dictionary Server),即远程字典服务

是一个开源的使用ANSI C语音编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。且免费开源,是当下最热门的NoSQL技术之一,也被人们称之为结构化数据库。

与其他同类型有所区别的是:redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步

Redis能干嘛
  1. 内存存储、持久化,内存中是断电即失,所以说持久化很重要(rdb、aof)
  2. 效率高,可以用于高速缓存
  3. 发布订阅系统
  4. 地图信息分析
  5. 计时器、计数器(记录浏览量)
  6. ……

NoSQL有什么特性
  1. 多样的数据类型
  2. 持久化
  3. 集群
  4. 事务

基础的知识
Redis是单线程的

Redis的性能瓶颈不是CPU,而是根据机器的内存和网络带宽,既然单线程可以实现,那就干嘛要去用复杂一点的多线程?

Redis是C语音写的,官方提供的数据为100000+的QPS,完全不比同样是使用key-value的Memecache差

那么另一个问题,既然是单线程的,为什么还会这么快?
  1. 思维误区1:高性能的服务器一定是多线程的
  2. 思维误区2:多线程(CPU上下文会切换)一定比单线程效率高

首先要理解基本的计算机组成原理,CPU>内存>硬盘的处理速度的

核心:redis是将所有的数据全部放在内存中,所以说使用单线程去操作效率就是最高的,多线程(CPU上下文切换消耗的时间相对就比较多),对于内存系统来说,如果没有上下文切换,效率就是最高的,多次读写都在一个CPU上,怎能不快呢

五大数据类型

Redis 是一个开源( BSD许可)的,内存中的数据结构存储系统,它可以用作数据库缓存消息中间件MQ

它支持多种类型的数据结构,如字符串(strings),散列(hashes),列表(lists),集合(sets),有序集合(sorted sets)与范围査询bitmaps ,hyperloglogs和地理空间(geospatial)索引半径査询。

Redis 内置了复制(replication),LUA脚本(Luascripting),LRU驱动事件(LRU eviction),事务(transactions)和不同级别的磁盘持久化(persistence),并通过 Redis哨兵(Sentinel)和自动分区(Cluster)提供高可用性(high availability)。

Redis-Key

String

数据结构是相同的

String类似的使用场景:value除了是字符串,还可以是数字

计数器

统计多单位的数量

粉丝数

对象缓存存储

List

Set

Hash

Zset

三种特殊数据类型

Geospatial

Hyperloglog

Bitmaps

事务

①原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。

②一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

③隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

④持久性(durability)。持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

在Redis事务没有没有隔离级别的概念!

在Redis单条命令式保证原子性的,但是事务不保证原子性!

乐观锁

①当程序中可能出现并发的情况时,就需要保证在并发情况下数据的准确性,以此确保当前用户和其他用户一起操作时,所得到的结果和他单独操作时的结果是一样的。

②没有做好并发控制,就可能导致脏读、幻读和不可重复读等问题。

在Redis是可以实现乐观锁的!

总结:乐观锁和悲观锁的区别。

悲观锁: 什么时候都会出问题,所以一直监视着,没有执行当前步骤完成前,不让任何线程执行,十分浪费性能!一般不使用!

乐观锁: 只有更新数据的时候去判断一下,在此期间是否有人修改过被监视的这个数据,没有的话正常执行事务,反之执行失败!

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

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

相关文章

doc 和 docx 文件的区别

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

几行代码实现多对多网格视图

当我们希望实现如下图所示效果如何实现呢: 我们可以使用Vis.js,vis.js Vis Network Examples Vis.js 是一个支持多种网络可视化的库,使用简单,功能强大。 以下是具体实现例子 不带箭头的: <!DOCTYPE html> <html> <head><meta charset="utf…

Windows 系统下 JDK 1.8 与 17 版本的相互切换

目录 一、当前本机已安装的 JDK 版本&#xff1a;1.8 二、下载 JDK 17 三、修改系统配置&#xff0c;将 JDK 版本切换为 17 1、新建 JAVA17_HOME 2、编辑 Path 3、验证是否切换成功 4、之后想再切换成 JDK 1.8 一、当前本机已安装的 JDK 版本&#xff1a;1.8 二、下载 J…

pyecharts画水球图

水波图图是一种适合于展现单个百分比数据的图表类型 from pyecharts.charts import Grid,Liquid from pyecharts.commons.utils import JsCodel1 (Liquid()#设置数据系列名称及数据.add("lq",[0.7,0.6,0.25],center["60%","50%"],color[blue,ye…

图像处理与视觉感知复习--空间域图像增强

文章目录 图像增强直方图空间滤波器 图像增强 图像增强 { 处理方法 { 空间域方法 { 点处理 ( 变换 ) 模板处理 ( 滤波 ) 频域方法 处理策略 { 全局处理 局部处理 处理对象 { 灰度图像 彩色图像 图像增强 \begin{cases} 处理方法 \begin{cases} 空间域方法 \begin{cases} 点处理…

Hadoop 2.0:主流开源云架构(三)

目录 四、Hadoop 2.0体系架构&#xff08;一&#xff09;Hadoop 2.0公共组件Common&#xff08;二&#xff09;分布式文件系统HDFS&#xff08;三&#xff09;分布式操作系统Yarn&#xff08;四&#xff09;Hadoop 2.0安全机制简介 四、Hadoop 2.0体系架构 &#xff08;一&…

查分易分班查询系统怎么做?

分班查询一直是让许多老师头疼的问题。一到开学季&#xff0c;办公桌上就堆满了学生的资料和分班表。要将这些信息一一录入系统&#xff0c;然后发布给学生和家长极其浪费时间和精力&#xff0c;而且很容易出错。每当分班结果公布时&#xff0c;家长和学生急切地想要知道自己的…

第20篇 Intel FPGA Monitor Program的使用<三>

Q&#xff1a;如何用Intel FPGA Monitor Program创建汇编语言工程呢&#xff1f; A&#xff1a;我们用一个Nios II汇编语言简易应用程序来发掘Intel Monitor FPGA Program软件的一些功能特性&#xff0c;并介绍创建工程的基本步骤。该程序可以实现找到存储在存储器中的32位整…

「51媒体-年中大促」天津有哪些媒体资源-媒体宣传服务公司

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 天津的媒体资源相当丰富&#xff0c;涵盖了报纸、电视、广播、新闻门户网站、央媒驻天津机构、视频媒体以及全国媒体资源等多个方面。以下是详细的媒体资源分类和具体信息&#xff1a; 一…

Excel 多列组合内容循环展开

某表格 A 列是编号&#xff0c;其他列是用逗号分隔的意义不同的分类列 ABCDEFG1Assembly#ProductTypeUnit ConfigNominal CapacitySupply VoltageGenerationCase Construction23H1012290001CMD,P24,36FAA,B33H1012290002CMD,P48,60FA,BA,B43H1012290003CMD,P24,36B,C,D,EAA,B …

Windows外接显示屏显示无信号

我的电脑症状比较特别&#xff0c;启动后可以连接外接显示屏&#xff0c;一旦睡眠重新唤醒就会断联 显示器显示无信号&#xff0c;笔记本显示设置里只有自带显示器的信息 试了重启显示屏、重新插拔HDMI线、重新换端口都不行 最后解决方法&#xff1a; 属性-设备管理器-显示…

Mysql中使用where 1=1有什么问题吗

昨天偶然看见一篇文章&#xff0c;提到说如果在mysql查询语句中&#xff0c;使用where 11会有性能问题&#xff1f;&#xff1f; 这着实把我吸引了&#xff0c;因为我项目中就有不少同事&#xff0c;包括我自己也有这样写的。为了不给其他人挖坑&#xff0c;赶紧学习一下&…

国内“5大核心期刊”详细介绍

一、CSSCI CSSCI&#xff0c;中文社会科学引文索引&#xff0c;由南京大学自主研发的人文社会科学引文索引数据库&#xff0c;旨在服务于人文社会科学领域的知识创新、前沿研判、综合评价&#xff0c;提升中文学术影响力。因为是南京大学研发的&#xff0c;又被称作是“南大核…

Github入门教程,适合新手学习(非常详细)

前言&#xff1a;本篇博客为手把手教学的 Github 代码管理教程&#xff0c;属于新手入门级别的难度。教程简单易操作&#xff0c;能够基本满足读者朋友日常项目寄托于 Github 平台上进行代码管理的需求。Git 与 Github 是一名合格程序员 coder 必定会接触到的工具与平台&#x…

Java优雅统计耗时【工具类】

任务耗时如何优雅的打印&#xff0c;看完本文你就明白了&#xff01;~ import cn.hutool.core.date.StopWatch; import cn.hutool.core.lang.Console;/*** 优雅打印出任务耗时*/ public class Main {public static void main(String[] args) throws Exception{StopWatch stopW…

Kali中安装和使用docker的学习笔记

一、常见命令 ctrl 、shift、 &#xff1a; 窗口变大&#xff1b; ctrl 、- &#xff1a;窗口变小&#xff1b; ctrl L&#xff1a; 清屏 &#xff1b; sudo su : 切换root 用户&#xff1b; ip addr / ifconfig: 获取IP地址&#xff1b; systemctl start ssh…

【报错】无法找到模块“element-plus/es/locale/index.mjs”的声明文件。

报错&#xff1a; 无法找到模块“element-plus/es/locale/index.mjs”的声明文件。“E:/codeAll/work/test1/test2/HealinLikeMe-ui/node_modules/.pnpm/element-plus2.7.3_vue3.4.27_typescript5.4.5_/node_modules/element-plus/es/locale/index.mjs”隐式拥有 "any&quo…

MySQL-----JOIN语句之内连接

在我们使用MySQL进行项目的开发过程中&#xff0c;仅仅对一张表进行操作是远远不够的&#xff0c;真正的应用中经常需要从多个数据表中读取数据。我们在使用的过程中&#xff0c;尝尝通过 SELECT, UPDATE 和 DELETE 语句配合使用 JOIN 来联合多表查询。 JOIN 分类 INNER JOIN…

Windos10上Podman安装运行mysql8

记录以下在windows10系统上Podman v5.1.1安装MySQL8全过程。 目录 一、拉取mysql8镜像二、创建宿主目录三、创建 my.cnf文件四、创建Mysql8容器五、windows上Podman安装运行mysql8失败问题描述 解决办法① 通过PowerShell进入wsl② 修改wsl系统配置③ 重启wsl&#xff0c;Podma…

CNC智能化的上下料解决方案

CNC加工行业因其高效、精密的加工能力在3C、汽车等行业中占据重要地位。然而&#xff0c;传统的CNC上下料方式繁琐且耗时&#xff0c;与CNC机床配套工序和设备的高度信息化、自动化水平形成鲜明对比。这种不匹配导致人工上下料成为生产线的瓶颈&#xff0c;不仅效率低下&#x…