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上的,在内存情况下,这就是最佳的方案!

                
            
        
浙公网安备 33010602011771号