文章目录
一、NoSQL 概述
1. 为什么用NoSQL
- 单机 MySQL 的年代
- Memcached(缓存)+ MySQL + 垂直拆分(读写分离)
- 分库分表 + 水平拆分 + MySQL集群
- 如今最近的年代
- MySQL等关系型数据库不够用,数据量大,变化快
- MySQL等关系型数据库不够用,数据量大,变化快
为什么要用 NoSQL
用户的个人信息,社交网络,地理位置。用户自己产生的数据,用户日志等等爆发式增长。
这时候我们就需要使用NoSQL数据库,它可以很好的处理以上情况。
2. 什么是 NoSQL
NoSQL = Not Only SQL
- 泛指非关系型数据库。传统关系型数据库很难对付web2.0时代。尤其是大规模的高并发社区。
3. NoSQL 特点
- 方便扩展(数据之间没有关系,很好扩展)
- 大数据量高性能(NoSQL的缓存是记录级的,细粒度的缓存,性能高)
- 数据类型是多样型的(不需要事先设计数据库,随取随用)
- 传统关系型数据库(RDBMS)和NoSQL
传统的RDBMS
结构化组织;
SQL;
数据和关系都存在单独的表中;
严格的一致性;
基础的事务
NoSQL
不仅仅是数据
没有固定的查询语言
键值对存储,列存储,文档存储,图形数据库
最终一致性
CAP定理 和 BASE (异地多活)
高性能,高可用,高可扩展
4. NoSQL 的四大分类
- KV键值对
- Redis
- 文档型数据库(bson 格式)
- MongoDB(是一个基于分布式文件存储的数据库,用来处理大量的文档)
- 列存储数据库
- HBase
- 图关系数据库
- 存的不是图形,是关系
- Neo4j
二、Redis 概述
1. 什么是 Redis
- Redis(Remote Dictionary Server),远程字典服务;
- 当下最热门的NoSQL技术之一,也被称为结构化数据库;
2. Redis 用途
- 内存存储、持久化;
- 效率高,用于高速缓存;
- 发布订阅系统;
- 地图信息分析;
- 计时器、计数器(浏览量)
三、Redis 安装
官网:https://redis.io/
(注意:Windows系统的需要在github上下载,因为Redis推荐在Linux上搭建)
【下面介绍在Windows下安装的步骤】
下载安装包
链接:https://pan.baidu.com/s/1h5pwR64SvjCz2_6JRNDGJw
提取码:yt9h
- 解压后的安装包
- 打开命令窗口,切换目录到当前文件夹下,然后输入以下命令:
redis-server redis.windows.conf
默认端口是:6379
- 不要关闭上一个窗口,双击打开 redis-cli.exe
输入下面内容进行测试
四、Redis 基础知识
- redis 默认有16个数据库,默认使用的是第0个;
- redis 是单线程的,是基于内存操作的;
- redis 的性能瓶颈不是CPU,而是机器的内存和网络带宽;
- redis 为什么单线程还这么快
- 高性能的服务器不一定时多线程的;
- 多线程涉及CPU上下文切换;
- 核心:redis 是将所有的数据都放在内存中的,所以使用单线程操作效率最高。多线程会有CPU上下文切换耗时。对于内存来说,如果没有上下文切换效率就是最高的。多次读写在一个CPU上的,在内存情况下,这个方案是最佳的。
五、Redis 五种基本数据类型
Redis 不区分大小写命令
1. String 字符串类型
2. List 列表类型
- 在redis里,可以使用List来表示 栈、队列、阻塞队列;
- List 中的命令,以
L
开头的代表左操作,以R
开头的代表右操作;
3. Set 集合类型
- Set 中的所有命令都是以
S
开头的;
4. Hash 哈希类型
- Map集合,key-map;
- 这个值是一个Map集合,本质和String类型没有太大的区别,还是一个简单的key-value;
5. Zset 有序集合类型
- 在 set 基础上,增加了一个值;
- set k1 v1 zset k1 score1 v1
六、Redis 三种特殊数据类型
1. Geospatial 地理位置详情
- 朋友的定位,附近的人,打车距离计算;
getpos
:获得当前定位:一定是一个坐标值
geodist
:两人之间的距离
georadius
:获得附近的人(通过半径来查询)