Redis介绍
redis是一个键值对的数据库,例如:
{
"id":1001,
"name":"张三",
"age": 21
}
它的结构没有表,没有约束,和传统的sql数据库有很大区别,redis也叫nosql数据库,
认识NoSQL
1、字母S structured : 结构化。
存入SQL的都是结构化的数据,需要遵守sql的标准,有固定的格式要求。且表的结构不建议修改。
NoSQL是非结构数据库,对数据的约束很小。
2、关联性:
SQL中的表之间是存在关系的,比如部门表和员工表,数据库会自动维护这种关系,并且这种关系可以节省存储空间,比如我在订单里关联用户,不用存用户的所有信息,只用关联用户id即可。
而NoSQL是非关系型的数据库,数据和数据之间没有专门维护关系,而是通过JSON文档嵌套的格式进行描述。
3、查询
SQL的查询语法固定,所有各种数据库都可以使用。
而NoSQL的查询语句每个都不一样,需要专门学。
redis:get user:1 #像命令
MongoDB:db.users.find({_id:1}) #像函数
4、事务
关系型数据库基本都满足ACID
NoSQL无法全部满足事务的需要,所以是BASE
5、拓展性
SQL是垂直的,它的数据都是存储于计算机本地磁盘的,也就是说,存储的大小也是有限的,无法进行分布式的,数据分片式的存储。
NoSQL是水平的,在插入数据的时候,会根据数据的id进行一个判断,判断数据应该存储在哪个节点,方便数据的拆分。
SQL |
NoSQL |
|
数据结构 |
结构化 |
非结构化 |
数据关联 |
关联的 |
无关联的 |
查询方式 |
SQL查询 |
非SQL |
事务特性 |
ACID |
BASE |
存储方式 |
磁盘 |
内存 |
拓展性 |
垂直 |
水平 |
使用场景 |
1、数据结构固定 2、相关业务对数据安全性,一致性要求较高 |
1、数据结构不固定 2、对一致性,安全性要求不高,3、对性能有要求 |
认识Reids
redis诞生于2009年,又称远程词典服务器,是一个基于内存的键值型NoSQL数据库。
特征:
·键值型
value支持多种不同数据结构,功能丰富
·单线程
每个命令是单线程的,不用担心执行到一半会被其他命令占用,所以命令具有原子性,是安全的。6.0版本在网络请求上变成了多线程,命令的执行还是单线程的。
·低延迟,速度快
原因是基于内存(最重要的原因),IO多路复用,良好的编码。
·支持数据的持久化
会定期把数据从内存存储在磁盘,保证了数据安全。
·支持主从集群,分片集群
主从集群是指从节点可以备份主节点的数据,这是为了数据的安全性。
分片集群是把数据做拆分,把一个数据拆成n份,存到不同的机器中,拓展了存储
·支持多语言客户端
安装redis
1、安装依赖
redis是由C语言开发,因此安装之前必须要确保服务器已经安装了gcc,可以通过如何命令查看机器是否安装:
gcc -v
如果没有安装则通过一下命令安装:
yum install -y gcc
2、下载tar包
# 选择一个指定的目录下载,通过weget进行在,个人在root用户下习惯性在/tmp/目录下
wget https://download.redis.io/releases/redis-6.2.12.tar.gz
# 解压
tar -zxvf redis-6.2.12.tar.gz