- 简介
- nosql(not only structured query language)
- 泛指非关系型数据库
- 设计原因:和关系型数据库可以在功能上进行互补
- 具体产生背景:随着使用sql的人增多,多用户同时使用即高并发,对后台服务的要求高,sql基于硬盘的基于内存缓存的nosql就产生了,能够解决sql性能不足的问题。
- 在设计上不采取关系型数据库的设计范式(六大范式-越高的范式数据冗余度越小),为某一领域特定场景设计。
- 优点:为某一领域特定场景设计,从而让性能、容量、延展性达到一定提升。
- 对数据高并发的读写(redis内存存储+数据结构简单-高并发要求读写速度快,防延迟)
- 海量数据的读写(hbase存在hdfs+实现实时随机读写)
-
对数据高可扩展性的(搭集群+和其他插件配合?)
- 缺点:不支持sql标准,不支持事务原则acid
- 不能即席查询(sql结构化存储使之能够处理复杂的关系,进行快速查询)
- 不适用需要事务支持的场景
- 优点:为某一领域特定场景设计,从而让性能、容量、延展性达到一定提升。
- 常见的有:memcached\redis\hbase\mongoDB等(由于不采取一致的设计范式,所以nosql之间没有很多共同点,不像是sql中的mysql和oracle能有80%共同点)
- 泛指非关系型数据库
- redis
- 优点及应用场景
- 内存存储数据,处理速度快
- 可持久化,能够将数据作备份,重新进入会话后恢复数据
- 应用:一般是作为缓存数据库去辅助持久化数据库
- 原理:用户发送请求到项目中,项目中的server服务在处理请求时会用到数据的读写;数据读写是基于mysql去做的,而mysql需要后台数据服务作读写操作--读写的性能高不高决定了请求处理的快慢,而mysql从磁盘里面做读写,速度慢。所以解决办法是在前面用一个memcached数据库搭建一个缓存,缓存热点(访问频率高的)数据。之后收到请求就先到mem里面找数据,找不到再走后台服务到后面磁盘找数据--这一次的数据要放到缓存中。
- 支持丰富的数据类型
- 启停
- 通过客户端停止服务(服务端停服务直接ctrl+c)
- 可能出现服务报错停不掉-原因是在启动服务的路径下创建持久化文件,而此目录不属于你登录的用户从而导致没有权限问题(比如说在root的目录中用atguigu用户无法创建文件)。
- 技术
- -kv存储系统
- 单线程+多路IO复用技术-不用考虑并发安全性问题
- 优点及应用场景
- redis的五大数据类型
- string
- list
- set
- zset
- hash
- nosql(not only structured query language)
- 实例
- 将user对象存起来--都能存,但要根据需求确定合适不合适、选哪一个方案
- 具体方案
- 一个对象存成一个string--但redis没有json格式,要调出来转格式再存进去
- 一个对象的每个属性存成一个string类型的k,v--但存的太散了,kv太多
- 一个对象存成kv,v存成hash--尤其适合存对象型的,看似是整体,但能一个一个操作
- API
- 代码思想
- windows里写的代码怎么去连接hadoop102里面的redis服务呢?
- 所有的客户端去操作服务端时都需要拿到一个连接对象(客户端对象),指定一下要去连哪台机器、哪个端口号,才能找到服务,从而开辟连接,返回一个对象帮助我们操作redis,这个对象叫jedis。
- jedis对象的创建
- windows里写的代码怎么去连接hadoop102里面的redis服务呢?
- 代码思想
- 持久化
- RDB(redis database)-打快照的方式存进硬盘(临时快照文件->覆盖硬盘持久化文件)--但最后一次持久化的数据会丢失(比如30s才写入硬盘,但还不到30s时服务掉了)---还要周期性的对持久化文件进行备份,防止持久化文件被破坏)
- AOF(append only file)-记录所有操作到硬盘--恢复的时候就是把所有操作从头再来一遍(所以速度比RDB慢,且耗费磁盘空间)---实时记录(若中途开启aof,要在命令行先开启aof把历史数据(将rdb的数据拷贝)加过来)
- 同时用时aof优先
从0到1学习nosql-redis
于 2022-06-22 11:14:59 首次发布