1 NoSQL数据库简介以及Redis安装
摘要:Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。在本文中,我们会讲解NoSQL到底是什么,以及Redis的基本概念与安装方式。作者:来自ArimaMisaki创作
1.1 时代的变迁
web1.0时代:数据访问量有限,用一夫当关的高性能单点服务器可以解决大部分问题。
web2.0时代:用户访问量大幅度提升,同时产生了大量的用户数据,加上后来的智能移动设备的普及,所有的互联网平台都面临着巨大的性能挑战。
1.2 结构化和非结构化数据
差异对比:
SQL | NoSQL | |
---|---|---|
数据结构 | 结构化 | 非结构化 |
数据关联 | 关联的 | 无关联的 |
查询方式 | SQL | 非SQL |
事务特性 | ACID | BASE |
存储方式 | 磁盘 | 内存 |
扩展性 | 垂直 | 水平 |
使用场景 |
数据存储的差异:
非结构化数据:
- 文档数据库:以文档为数据库的最小单位,对文档以某种标准化格式封装,每个文档可能具有完全不同的结构,具有基于文档内容的索引和查询能力。如mongoDB。
- 图数据库:使用图作为数据模型来存储数据,可以高效地存储不同顶点之间的关系,专门用于处理具有高度相互关联关系的数据,可以高效地处理实体之间的关系。如InfiniteGraph。
- 键值数据库:使用键定位值,值对数据库而言是透明不可见的,不能对值进行索引和查询,只能通过键进行查询。如Redis。
- 列族数据库:采用列族数据模型,数据库由多个行构成,每行数据包含多个列族,不同的行可以具有不同数量的列族,属于同一列族的数据会被存放在一起。如HBase。
BASE理论:并非表示“基础”。而是指Basically Available、Soft state、Eventual consistency。其中Basically Available表示基本可用(一个分布式系统的一部分发生问题变得不可用时,其他部分仍然可以使用,允许分区失败的情形出现)。Soft state表示软状态(和一致性相反,状态可以有一段时间不同步,具有一定的滞后性)。Eventual consistency表示最终一致性(后续的访问操作可能暂时读不到更新后的数据,但最终必须能读到)。
查询的差异:
1.3 认识Redis
说明:Redis诞生于2009年全称是Remote Dictionary Server(远程词典服务器),是一个基于内存的键值型NoSQL数据库。
特征:
- 键值(key-value)型,value支持多种不同数据结构,功能丰富
- 单线程,每个命令具备原子性
- 低延迟,速度快(基于内存、IO多路复用、良好的编码);其中基于内存是它速度快的根本原因
- 支持数据持久化;Redis能够定期地将内存中的数据迁移到磁盘中
- 支持主从集群、分片集群;将一份数据拆分后分摊在多个计算机上
- 支持多语言客户端
作者:Antirez
Redis的官方网站地址:https://redis.io/
1.4 安装Redis
说明:大多数企业都是基于Linux服务器来部署项目,而且Redis官方也没有提供Windows版本的安装包。因此我们在此基于Linux系统来安装Redis,此处选择的Linux版本为CentOS 7。
安装步骤:
- 安装gcc依赖库,
yum install -y gcc tcl
用于安装,gcc -v
用于检查gcc版本。 - 在官网下载Redis安装包
- 利用cd /usr/local/src进入到该目录下
- 利用finalshell将安装包穿上服务器
- 使用
tar -zxvf redis-6.2.6.tar.gz
解压安装包 - 进入解压后的目录并使用
make && make install
编译并安装 - 进入
/usr/local/bin
目录下使用redis-server
看是否能够启动redis,这种启动方式属于前台启动,会阻塞整个shell会话窗口,所以我们直接ctrl+c停止redis - 使用
cd /usr/local/src/redis-6.2.6
进入该目录找到redis.conf修改配置文件 使用
vi redis.conf
进入配置文件,修改如下配置# 允许访问的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0 bind 0.0.0.0 # 守护进程,修改为yes后即可后台运行 daemonize yes # 密码,设置后访问Redis必须输入密码 requirepass 123321
其他配置看自我需求
# 监听的端口 port 6379 # 工作目录,默认是当前目录,也就是运行redis-server时的命令,日志、持久化等文件会保存在这个目录 dir . # 数据库数量,设置为1,代表只使用1个库,默认有16个库,编号0~15 databases 1 # 设置redis能够使用的最大内存 maxmemory 512mb # 日志文件,默认为空,不记录日志,可以指定日志文件名 logfile "redis.log"
- 配置完成后可以进入
cd /usr/local/src/redis-6.2.6
,然后使用redis-server redis.conf
开启redis - 使用
redis-cli -u 123456 shutdown
可以关闭redis服务 - 我们可以实现开机自启redis,首先通过
vi /etc/systemd/system/redis.service
新建一个系统服务文件 拷贝以下内容
[Unit] Description=redis-server After=network.target [Service] Type=forking ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf PrivateTmp=true [Install] WantedBy=multi-user.target
- 通过
systemctl daemon-reload
重载系统服务 以后可以通过以下的命令来操作redis了
# 启动 systemctl start redis # 停止 systemctl stop redis # 重启 systemctl restart redis # 查看状态 systemctl status redis
- 执行
systemctl enable redis
可以实现redis开机自启
1.5 客户端
说明:Redis安装完成后就自带了命令行客户端redis-cli
。
格式:redis-cli [options] [commonds]
参数:常见的options如下:
-h 127.0.0.1
:指定要连接的redis节点的IP地址,默认是127.0.0.1-p 6379
:指定要连接的redis节点的端口,默认是6379-a 密码
:指定redis的访问密码
提示:使用命令是不建议采用-a 密码
的方式来登录,而是进入redis数据库后使用AUTH 密码
会更加安全;在登录成功后,使用命令ping
可以测试是否登上redis。