前言
数据库的分类
1、关系型数据库
产品:
- mysql
- PostgreSQL
- Oracel
- DB2 IBM 公司 基于 Unix系统的软件
存储媒介:
硬盘
使用的查询语言
SQL 结构化查询语言
2、非关系型数据库
特点是:存储的数据是键值对(变量名 变量值)key value
例如:
name shark
ip 192.168.122.100
(注意)每个键值对之间没有任何关系
产品:
- memcached
- redis
工作中的数据存放在内存中;
内存的访问速度比较快,因此这些产品也叫做缓存服务器;
一般存储的是业务上的热数据。
现代基于云(k8s)架构衍生的新型架构:时序监控系统-- 例如 prometheus
3、文档类型的数据库
存储数据的方式(格式)是 JSON 格式
{“name”: “shark”, “age”: 18}
文档 -->表:
name | age |
---|---|
shark | 18 |
产品:
Elasticsearch
mangodb
一、安装
官网地址:http://www.redis.cn/
(源码下载)
yum安装直接下载包即可,默认配置文件:/etc/redis.conf
两种安装方式安装完成以后redis-server都在/usr/local/bin/目录下
以下介绍编译安装:
1、安装依赖包
yum install gcc tcl
注意:如果编译安装redis6.0版本,需要对依赖包先进行升级,否则编译会报错:
make[1]: *** [server.o] Error 1
解决办法:
依次执行以下命令进行升级
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils #这句是临时的
scl enable devtoolset-9 bash #修改环境变量
echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
gcc -v
2、解压安装
tar -xf redis-4.0.10.tar.gz
cd redis-4.0.10
make && make install
echo $? #检查上条命令运行是否报错
3、配置redis
修改配置文件位置,通常放到/etc下,文件名自定义,此处以redis默认端口6379命名
mkdir /etc/redis
cd redis-4.0.10/
cp redis.conf /etc/redis/6379.conf
4、配置 centos7 systemd 管理 redis 服务
注意:此步骤根据个人需要可配可不配
在/lib/systemd/system目录下创建一个脚本文件redis.service,里面的内容如下:
[Unit]
Description=Redis
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/redis-server /etc/redis/6379.conf --daemonize no
ExecStop=/usr/local/bin/redis-cli -p 6379 shutdown
[Install]
WantedBy=multi-user.target
[Unit] 表示这是基础信息配置块
Description 是描述
After 开启自启动时候的顺序, 指定的服务必须先于次此服务启动,一般是网络服务启动后启动
[Service] 表示这里是服务信息配置块
Type 指定启动服务的类型, simple 是默认的方式
EnvironmentFile 指定服务启动时用到的配置文件
ExecStart 是启动服务的命令
ExecStop 是停止服务的指令
[Install] 表示这是是安装信息配置块
WantedBy 是以哪种方式启动:multi-user.target表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。
使用 systemctl 操作
刷新配置,让 systemd 识别刚刚添加的 redis 服务
systemctl daemon-reload
启动服务并授权在主机启动的时候同时启动服务
systemctl start redis && systemctl enable redis.service
5、相关配置
设置监听地址
shell> vi /etc/redis/6379.conf
#bind 127.0.0.1
bind 参数若改为0.0.0.0或都注释掉,则会监听服务器上的所有 ip
可以指定一个或者多个 如:
#bind 127.0.0.1 192.168.1.10
设置使用守护进程都方式运行服务
需要编辑配置文件 /etc/redis/6379.conf
daemonize yes # 守护进程的方式启动服务,默认为no
客户端指定端口访问
redis-cli -p 6379
6、服务的启动和停止
systemctl start redis
systemctl stop redis
/usr/local/bin/redis-server /etc/redis/6379.conf #启动服务
redis-cli -p 6379 shutdown #停止服务
7、检查测试
检查默认端口 6379 是否监听:ss -ntal
或者 ps -ef |grep redis
查看进程状态
登陆redis客户端:
shell> redis-cli
127.0.0.1:6379> info
# Server
redis_version:4.0.10
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:cfb22f7d67db356d
... 略 ...
二、数据类型
数据类型的基本介绍
三、Redis 的认证连接
// 在配置文件中找到以下配置项,大约在第 `500` 行
shell> vi /etc/redis/6379.conf
requirepass loveyou..
loveyou… 就是密码了,更改好后重启服务
使用设置好的密码认证
// 使用 auth 进行密码认证
127.0.0.1:6379> info
NOAUTH Authentication required.
127.0.0.1:6379> auth lovayou..
OK
127.0.0.1:6379> info
# Server
redis_version:4.0.10
...略...
或者在 shell 命令行里使用 -a 选项指定密码,会出现警告信息
bash[root@localhost ~]# redis-cli -a loveyou.. info
会出现警告信息
Warning: Using a password with '-a' option on the command line interface may not be safe.
# Server
redis_version:4.0.10
...略...
四、持久化存储
1. 持久化存储的方式介绍
Redis 分别提供了 RDB 和 AOF 两种持久化机制:
- RDB 将数据库的快照(snapshot)以二进制的方式保存到磁盘中。
- AOF 则以协议文本的方式,将所有对数据库进行过写入的命令(及其参数)记录到 AOF 文件,以此达到记录数据库状态的目的
2. RDB
a. 什么是RDB
和 MySQL 中的 mysqldump 差不多一个道理。
b. 什么情况下会触发 RDB
第一种情况,主动执行 save 命令(同步,阻塞 ,就是save 命令执行完毕后才能执行后续的其他命令操作)
阻塞
保存 RDB 文件的策略
每次创建新的文件,并且替换原来旧文件(假如存在旧的文件)
第二种情况主动执行 bgsave 命令 (异步,非阻塞 )
文件策略和 save 相同
第三种情况,自动触发
自动触发,就是通过对 Redis 的配置文件重相关选项的修改,当达到某个配置好的条件后,自动生成 RDB 文件,其内部使用的是 bgsave 命令。
配置文件中相关选项的默认值如下:
save 900 1 # 每隔 900 秒检查一次,假如至少有 1 条数据改变,就生成新的 RDB 文件
save 300 10 # 每隔 300 秒检查一次,假如至少有 10 条数据改变,就生成新的 RDB 文件
save 60 10000 # 每隔 60 秒检查一次,假如至少有 10000 条数据改变,就生成新的 RDB 文件
关于 RDB 文件的配置信息
#默认文件名
dbfilename dump-6379.rdb
#默认文件保存位置
dir /data_base
#假如 bgsave 执行中发生错误,是否停止写入,默认是 yes , 表示假如出错,就停止写入。
stop-writes-on-bgsave-error yes
#是否使用压缩|
rdbcompression yes
#是否进行数据的校验
rdbchecksum yes
建议的最佳配置:
关闭自动生成 RDB 文件
在配置文件中注释掉如下内容
#save 900 1
#save 300 10
#save 60 10000
使用不同端口号进行区分,因为,有可能会在同一台主机上开启多个 Redis 实例。
防止多个实例产生的数据信息写到一个文件中。
dbfilename dump-${port}.rdb
指定一个大硬盘的路径
dir /redis_data
假如出现错误,停止继续写入
stop-writes-on-bgsave-error yes
采用压缩
rdbcompression yes
进行校验
rdbchecksum yes
实验
修改配置文件中的相关选项,使其成为如下内容中显示的值:
dbfilename dump-6379.rdb
dir /redis_data # 此目录需要自己创建
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
假如你的 Redis 服务器允许客户端可以从非本机访问,应该在配置文件中,把 protected-mode 的值设置问 no。
这样的话,客户端就可以从其他主机访问 Redis 服务器了,并且不需要密码。
重启服务后,在 Rdis 命令行客户端中输入 save 命令。
[root@s1 ~]# redis-cli
127.0.0.1:6379> save
OK
127.0.0.1:6379>
该命令将在配置文件重配置的指定目录中创建 dump-6379.rdb文件。
恢复数据时,只需要保证此文件完好,并且在配置文件中指定的目录下即可。这样 Rdis 启动时就会把此文件中的数据恢复到当前的服务器中。
bgsave 命令和 save基本一样,就是 bgsave 命令不会产生阻塞
127.0.0.1:6379> bgsave
Background saving started
127.0.0.1:6379>
查看当前服务器的数据文件目录
127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "/redis_data"