Redis

  • 五大基本数据类型

    • String
    • List
    • Set
    • Hash
    • Zset(有序集合)
  • 三种特殊数据类型

    • geo
    • hyperloglog
    • bitmap
  • Redis配置详解

  • Redis持久化

    • RDB
    • AOF
  • Redis事务操作

  • Redis实现订阅发布(消息队列)

  • Redis主从复制

  • Redis哨兵模式(现在公司中所有的集群都用哨兵模式)

  • 缓存穿透及解决方案

  • 缓存击穿及解决方案

  • 缓存雪崩及解决方案

  • 基础API只Jedis详解

  • SpringBoot集成Redis操作

  • Redis实践分析

Nosql概述

为什么要用Nosql

2021年,大数据时代,大数据一般的数据库无法分析处理了!

1、单机MySQL的年代

1.数据量如果太大,一个机器放不下了

2.数据的索引 超过300万就一定要建立索引!(B+Tree) 一个机器内存也放不下

3.访问量(读写混合),一个服务器承受不了

2、Memcached(缓存) + MySQL +垂直拆分

网站80%的情况都是在读,每次都要去查询数据库的话就十分的麻烦!所以我们希望减轻数据的压力,我们可以使用缓存来保证效率!

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

3、分库分表+水平拆分+数据库集群

技术和业务在发展的同时,对人的要求也越来越高

本质:数据库(读,写)

早些年MyIsam:表锁(100w条数据),十分影响效率!高并发下就会出现严重的锁问题

转战Innodb:行锁

Mysql的集群,很好满足了那个年代的大部分要求

4、如今最近的年代

2010-2020:

图形数据库 JSON

MySQL等关系性数据库就不够用了!数据量很多,变化很快!

MySQL有的使用它来存储一些比较大的文件,博客,图片!数据库表很大,效率就低了!如果有一些数据库专门处理这种数据

MySQL压力就变得十分小(研究如何处理这些问题!)大数据的IO压力下,表几乎没法更大!

目前一个基本的互联网项目!

为什么要用NoSQL

用户的个人信息,社交网络,地理位置。用户自己产生的数据,用户的日志这样的爆发式增长

什么是NoSQL

NoSQL = Not Only SQL( 不仅仅是SQL)

关系型数据库:表格,行.列(POI)

泛指非关系型数据库的,随着web2.0互联网的诞生!传统的关系型数据库很难对付web2.0时代!

尤其是超大规模的高并发的社区!暴露出来很多难以克服的问题,NoSQL在当今大数据环境下发展的十分迅速,Redis发展最快的,而且是我们要掌握的课程。

NoSQL的四大分类

kv键值对:

  • 新浪:Redis
  • 美团:Redis + Tair
  • 阿里、百度:Redis + memecache

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

  • MongoDB(一般必须要掌握,单线程)

    • MongoDB 是一个基于分布式文件存储的数据库,C++编写,主要用来处理大量的文档!
    • MongoDB是一个介于关系型数据库和非关系型数据中中间的产品!MongoDB是非关系型数据库中的功能最丰富,最像关系型数据库的!
  • ConthDB

列存储数据库

  • HBase
  • 分布式文件系统

图关系数据库

  • 他不是存图型,放的是关系,比如:朋友圈社交网络,广告推荐!
  • Neo4j,InfoGrid

Redis入门

概述

Redis是什么?

Remote Dictionary Server,远程服务字典

是一个开源的使用C语言编写,支持网络,可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

免费和开源!是当下最热门的NoSQL技术之一!

Redis能干嘛?

1.内存存储、持久化,内存中是断电即失、所以说持久化很重要(rdb,aof)

2.效率高,可以用于高速缓存

3.发布订阅系统

4.地图信息分析

5.计时器,计数器(浏览量...)

6.(...)

特性

1.多样的数据类型

2.持久化

3.集群

4.事务

...

学习中

Linux安装

基础知识

16个数据库

默认使用的是第0个

可以使用select进行切换

127.0.0.1:6379> select 3 #切换数据库
OK
127.0.0.1:6379[3]> DBSIZE #查看DB大小
(integer) 0
127.0.0.1:6379[3]> set name ct#给数据库起别名
127.0.0.1:6379[3]> keys #查看数据库所有的key 
1) "name"

清除当前数据库:flushdb


Redis是单线程的!

明白Redis是很快的,官方表示,Redis是基于内存操作,CPU不是Redis性能瓶颈,Redis的瓶颈是根据机器的内存和网络带宽,既然可以使用单线程来实现,就使用单线程了!所以就使用了单线程了!

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

Redis为什么单线程还这么快

1误区1:高性能的服务器一定是多线程的?

2.误区2:多线程(CPU上下文切换)一定比单线程效率高!

CPU、内存、硬盘的速度要有所了解!

核心:redis是将所有的数据放在内存中的,所以说使用单线程去操作效率就是最高的,多线程(CPU上下文会切换:耗时的操作!!),对于内存系统来说,如果没有上下文切换效率就是最高的!多次读写都是在一个CPU上的,在内存情况下,这就是最佳的方案!

posted @ 2021-11-09 10:32  落笔生花  阅读(40)  评论(0)    收藏  举报