Redis基础部分

前言

数据库的分类

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}
文档 -->表:

nameage
shark18

产品:
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"

3. AOF

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值