Redis——01
主要学习目标:
- Redis 的特点以及使用场景
- Redis 单机版
- Redis 常用命令
- ~ 持久化策略
- ~ 主从复制
- 哨兵
- 集群
- Jedis
- SpringDataRedis
Redis 的特点以及使用场景
1. NoSQL 简介
关系型数据库为当前主流的数据存储。但是操作关系型数据库都需要进行频繁的 I/O 操作,也是主要影响系统性能的原因之一,并且与数据库的连接和关闭也是需要消耗性能的。即使有了连接池技术,在某些特定的场景下依旧会影响。
所以出现了 NoSQL
(Not Only SQL,不仅仅可以使用关系型数据库) 数据库,一些特定的场景使用 NoSQL 会更好。也就是 非关系型数据库
,尽量规避对文件进行频繁的 I/O 操作,提升性能。
常见的 NoSQL 数据库:
- memcached:键值对(K-V 服务),内存型数据库,所有的数据存在内存中。
- Redis:和 Memcached 类似,还具备持久化能力(只为断电重启恢复数据准备,读写都在内存中进行)
- HBase:以列作为存储(主要大数据使用)
- MongoDB:以 Document 做存储 (文件型,分布式),内存+磁盘。
2. Redis 简介
Redis 以 Key-Value
形式进行存储的 NoSQL 数据库,使用 C 语言
进行编写,主要操作的数据都在内存中
,效率非常高,所以大多情况下 Redis 作为缓存工具使用
。
Redis 以 solt (槽)
作为数据存储单元,并没有大小限制,每个槽中可以存储 N 多个键值对。Redis 固定具有 16384
个槽,因为槽没有大小限制,只有个数限制,理论上可以实现一个槽是一个 Redis。
Redis 的安装(Linux——CentOS 7.x)
1. 安装 C 语言需要的依赖
Redis 由 C 语言编写,所以需要安装 C 语言库
yum install -y gcc-c++ automake autoconf libtool make tcl
2. Redis 程序主体安装包
查看官网历史版本,这里使用的是 5.0.5,移到 Linux 中。
使用命令将其解压:
tar -zxf redis-5.0.5.tar.gz
会多处一个目录,里面就是 redis 的源码目录,但是此时都是源码(C 语言),还不是应用,需要再安装一下。
在当前目录下执行make
命令,会按照 Makefile
来对其进行编译成可执行文件。
等编译结束后,就可以开始 Redis 正式的安装了。
make install PREFIX=安装路径
如果没有 PREFIX 的话默认安装时当前路径,但是当前这个目录时 Redis 的源码包,不是很合适,所以可以找一个目录将其作为安装目录。
查看安装的Redis路径的文件:
- server 服务器
- cli 客户端
- check-aof 检查 aof
- check-rdb 检查 rdb
- benchmark 做统计
- sentinel 做哨兵的
3. Redis 的启动
启动 bin/redis-server
即可:
默认前台启动,这个窗口是不能关的。
上面显示了 Redis 的一些基本信息:
- 版本号 5.0.5 64 bit
- standalone 单机版
- 端口号:6379
- 进程ID:11332
接下来开始测试一下客户端是否能连接上:
启动 Redis 的客户端
bin/redis-cli
现在表示已经连接上了,quit 退出。
在服务端 ctrl + c
退出时,发现打印了一些信息:
大概意思是用户请求关闭 Redis 服务,在退出前进行了 RDB 快照保存在了磁盘上。
此时查看目录会发现多了一个文件:dump.rdb
,这个是 Redis 帮我们做的一个内存快照,默认情况下会每隔一段时间做一次,以及在关闭服务前做一次,为的是如果服务器宕机,重新启动 Redis 会自动加载 dump.rdb
将数据库恢复到上一次做内存快照的状态。可以在 conf 文件中配置相关参数。
需要注意的是:dump.rdb 文件生成的位置。
你的 redis 服务器在哪个路径下启动的,dump.rdb 就生成在哪,如果换个路径启动,则 dump.rdb 会重新生成,或者如果没有的话启动就不会加载 dump.rdb。
4. 修改 redis.conf 文件
之前编译 redis 的目录中有一个 redis.conf
文件,是 redis 配置文件模板,我们将其复制一份到 redis 的安装目录中进行集中管理。
cp redis.conf /usr/local/redis-5/
:复制一份到安装目录vim/vi redis.conf
:编写 redis 配置文件
修改的地方:
- 注释掉
bind 127.0.0.1
:这里表示如果没有指定 bind 的主机则会监听所有的请求,如果指定了,就只能监听指定的 ip,这里将其注释就能远程访问了。 - 将
protected-mode yes
改为protected-mode no
:如果没有 bind ip地址,也没有做密码配置的时候,将其安全模式关闭,不然访问会有很大的限制。 daemonize no
改为damonize yes
,该设置会生成一个 pid 文件,在后台运行,之前运行 redis 都是前台运行,现在可以在后台运行,有一个守护进程。
启动 redis 并指定配置文件:
bin/redis-server redis.conf
这个配置文件的指定可以是相对路径和绝对路径,所以按理来说 redis.conf
在任意位置都行。
启动效果:
查看当前 redis 进程状态:
ps aux | grep redis
可以看到 redis-server 的端口是:6379,此时在后台运行。
那么怎么关闭呢?
redis-server 并没有直接的关闭指令,但是可以通过 redis-cli 发送一个命令给 server 让其关闭。
bin/redis-cli shutdown
(推荐)kill -kill PID
使用 kill 命令,不推荐可能会造成 redis 持久化失败(快照失败)