Redis(1).基础必备知识
一、什么是NoSQL?
时代演进,网页开发可以概述为以下过程:
1、单机Mysql的引进:
初始时都是三层访问方式: (DAL数据库访问层)
这种情况下,整个网站的瓶颈存在:
(1)、数据量太大,一个机器放不下;
(2)、访问量太多—-读写混合,一个服务器受不了;
(3)、数据的索引—-B+ Tree,一个机器放不了;
2、Memcached(缓存)+Mysql+垂直拆分:
网站80%的时间都是在读数据,那么每次都去查询数据就很麻烦,因此使用缓存将每次读的数据存起来就可以减少服务器的压力!————-解决了大数据时代的读操作
3、Mysql主从复制、读写分离:
4、分库分表、水平拆分、mysql集群:
在Memcached的高速缓存,MySQL的主从复制、读写分离的基础上,由于MySQL主库的写压力开始出现了瓶颈,而数据量的猛增但是MyISAM使用表锁,在高并发下就会出现严重的锁问题,大量的高并发MySQL应用开始使用InnoDB引擎代替MyISAM,它采用的是行锁,增加了并发性。
根据数据的使用频率或者其它条件来对数据进行数据库划分。比如电商中用户的不常修改的个人信息单独存放在一个数据库。每个数据库又划分为多张表,这样查询起来就更快了。
为什么使用NoSQL?
NoSQL是指非关系型数据库。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。NoSQL数据库种类繁多,但是一个共同的特点就是去除掉了数据库的关系性。数据之间无关系,这样就非常容易扩展。也无形之间在架构的层面上带来了可扩展的能力。
RDBMS 与 NoSQL对比
RDBMS:
- 高度组织化结构数据
- 结构化查询语言(SQL)
- 数据和关系都存储在单独的表中
- 数据操纵语言(DML),数据定义语言(DDL)
- 严格的一致性
- 基础事务
NoSQL:
- 不仅仅是SQL
- 没有声明性查询语言
- 没有预定义的模式
- 键值对存储,列存储,文档存储,图形数据库
- 最终一致性,非ACID属性
- 包括(Reids、MongDB文档类、Memcache)
二、NoSQL数据模型简介?
聚合模型:
- KV键值 【memcache + redis】
- 文档型数据库(bson格式比较多) 【MongoDB】
- 列存储数据库(分布式文件系统)
- 图形关系数据库(不是放图片的,放的是关系:比如朋友圈社交网络、广告推送系统)
三、NoSQL数据库CAP原理CAP+BASE?
- 传统关系型数据库的ACID属性:
- NoSQL的CAP:
C:Consistency【强一致性】
A:Availablity【可用性】
P:Partition tolerance【分区容错性】
CAP的三进二原则:
CAP原则组合的应用场景:
BASE 原则理论:
分布式与集群的关联和区别:
四、 Redis入门
下载安装好redis后将redis中的 redis.conf
配置文件拷贝一份到 /usr/local/redis/etc
文件夹下,在修改重要配置文件前先进行拷贝!!!!!
同时在这里我将一些重要的可执行指令也移动到了 /usr/local/redis/bin
目录下,这些文件与Redis的启动 , 关闭 等息息相关.
4.1 修改Redis 配置文件使得后台自启动
找到 redis.conf
配置文件中 daemonize no
这部分,它的意思是Redis默认不会作为守护进程在后台自启动,如果需要改为 true即可.
4.2 Redis启动,关闭,重启
1 | redis-server 自定义配置文件xxx //启动服务端 |
Redis是单进程开始执行的,它是通过 epoll函数的包装来做到的.
Redis默认有 16个数据库,可以通过 select 数据库编号
来调整使用数据库.
1
2FLUSHDB //清空当前库数据
FLUSHALL //清空所有数据
4.3 Redis 常用数据类型及操作
(1) String 字符串数据类型
1 | exists key的名字 //判断某个key是否存在 |
(2) Hash 键值对组合
1 | hset key1 name zhangsan //一个key对应的是一个键值对 |
(3) List 列表
1 | lpush 键 [列表值] //从左边往右边插入 |
(4) Set 无序不可重列表
1 | sadd 键 [值列表] //添加值列表 |
(5) Zset 有序集合
1 | zadd key1 60 v1 70 v2 80 v3 90 v4 .... //给key1设置键和值 |