Redis简介,安装及常用命令
中国加油!武汉加油!
篇幅较长,配合右边目录观看
1. 发布订阅模式(不常用)
subscribe 订阅的频道的名称
publish 频道名字 内容
2. 事务(不用)
不能保证原子性,所以不用
命令 | 描述 |
---|---|
multi | 开启事务 |
exec | 提交事务 |
3. 持久化
3.1 rdb模式实现持久化
- Redis是基于内存的、所以速度快、但是Redis的数据放到内存里面、当Redis重启的时候 这个数据会发生丢失,为了解决数据丢失的问题,Redis持久化就产生了。
- 默认情况下,以rdb模式实现持久化。rdb是数据库默认的持久化模式-----又称为快照模式
- 这个模式是将内存的数据内容 直接保存到 dump.rdb这样的一个二进制文件中的
- 特点:因为保存的是二进制文件、所以做数据的恢复是相当的快的—适合于做数据的备份
- rdb到底是如何保存我们的数据库的:rdb每一次在保存这个数据的时候、首先都会清空原有的dump.rdb文件、然后将整个内存的数据全部写入到这个文件中 rbd-------保存的是redis内存中某一个时刻的数据(适合备份、不适合开发用) 假设刚好清空dump.rdb这个文件、现在断电了------------数据全丢了
rdb模式是不用开启的、这个模式的redis自动开启的
cd /usr/local/redis/etc
vim redis.conf
/save 900 1
3.1.1 rdb模式触发内存的数据和硬盘进行同步
save 900 1 在900秒的时间内如果有1和key发生改变 那么将触发内存和硬盘同步
save 300 10 在300秒的事件内如果有10个key发生改变 那么将会触发内存和硬盘同步
save 60 10000 在60秒的时间类假设有10000个key发生改变那么也变触发内存和硬盘同步
3.2 aof实现持久化
- aof模式是在redis1.1的版本的时候、才增加的一种持久化模式
- aof模式在使用的时候 保存的不是数据 是我们操作的时候的一条一条的命令
- 只要调用了Redis 那么只要有命令的使用那么都会被记录到aof文件中
- aof---------------记录的是操作的命令 不记录实际的数据
- aof模式如果是在数据恢复还原的时候 效率并不高 数据恢复的话采用rdb文件恢复是最快的
- 如果是开启了aof模式 那么会以aof模式为优先
3.2.1 aof模式如何使用
cd /usr/local/redis/etc
vim redis.conf
/appendonly
appendonly yes :表示的是开启aof的模式
3.2.2 aof模式触发策略
appendfsync always :只要有键发生改变 立马同步(每一次都触发IO操作、速度就慢下来、这种情况是不会丢数据)-----一般不用(效率太低了)
appendfsync everysec :每一秒钟进行数据同步一次(开发的时候一般选用他----速度上也比较快 即使出现数据的丢失也只会丢失1秒钟的数据)
appendfsync no :永远不同步、数据只是放到缓存里面 速度快 但是数据容易丢失
3.2.3 aof同步数据
每一次在进行数据同步的时候 使用的是 追加的模式 以前的数据不用删除 只需要追加新的操作即可
3.2.4 aof模式消息的重写
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100 (这个表示的是必须达到100%的增加才重写 64M+64M=128M )
auto-aof-rewrite-min-size 64mb aof文件(简单的说就是至少aof文件达到64M才重写)
手动重写
bgrewriteaof :这个命令就是手动重写
重写的好处是对aof文件进行优化(最终的结果都是一样的)
如果你要去手动重写(需要关闭混合持久化的开关才能看到功能)
aof-use-rdb-preamble no
3.3 混合持久化
3.3.1 问题
我们在开发的时候到底是选择 rdb 还是aof呢?
如果你关心的是你的数据、但是任然可以接受在一段时间内依然可以接受一些数据的丢失 那么你可以使用rdb(速度快)
我们以前开发的时候基本上都使用aof模式来做开发、如果你用的版本是4.0以前的版本那么建议你呢还是使用aof
在4.0以后 就出现了一种新的持久化模式(混合持久化)
这个混合持久化 就集成了 rdb的有点和aof所有的有点
4. Redis设置密码
vim /usr/local/redis/etc/redis.conf
/requirepass
5. 缓存淘汰策略
vim /usr/local/redis/etc/redis.conf
/maxmemory-policy
值 | 描述 |
---|---|
noeviction | 只要缓存满了,那么就不继续服务器里面写的请求,读的请求就可以完成的,这种模式缓存里面的所有数据不会丢失,但会导致参与Redis的业务会失败 |
volatile-lru | 会优先淘汰掉 设置了过期时间的key,然后淘汰掉使用比较少的key,如果没有设置过期时间,那么不生效 |
allkeys-lfu | 在淘汰的时候,淘汰全体key集合,没有设置过期时间,使用比较少,依然会被淘汰 |
volatile-ttl | key剩余的寿命的ttl值 ttl值越小,越先被淘汰 |
allkeys-random | 淘汰的随机的key |
6. 主从分离
6.1 再开一个视图,复制redis.conf启动redis
6.2 第一个视图修改redis/etc/redis.conf
daemonize yes //后台启动
bind 0.0.0.0 //表示的是允许所有人访问
6.3 第二个视图修改zhucong/etc/redis.conf
port 6378
daemonize yes //后台启动
bind 0.0.0.0 //表示的是允许所有人访问
slaveof 主服务器的ip地址 主服务器端口
6.4 第一个视图进入redis客户端
info
6.5 单点问题
主服务器暴毙了整个集群都崩了
7. 哨兵模式
7.1 新建第三个视图,弄出一个shaobing的Redis,redis.conf换成了sentinel.conf
#配置的是配置文件的目录
dir /usr/local/redis/
#配置的是监听主服务器信息 最后一个参数很重要 一般设置为1 多少票通过
sentinel monitor mymaster 47.98.33.215 6379 1
#配置的是意思是心跳信号发给你了 多久没回应就认为主服务器死了...
sentinel down-after-milliseconds mymaster 5000
哨兵的启动命令
./redis-server /usr/local/shaobing/sentinel.conf --sentinel &
8 集群模式
8.1 在/usr/local目录下创建一个文件夹redis-cluster
mkdir /usr/local/redis-cluster
8.2 在redis-cluster中创建6个文件夹
mkdir 7001
mkdir 7002
....
mkdir 7006
8.3 将redis解压目录中的 redis.conf文件复制到7001中
cd usr/local/redis-5.0.7
cp redis.conf /usr/local/redis-cluster/7001
8.4 vim这个文件进行更改
daemonize yes
port 7001
dir /usr/local/redis-cluster/7001
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 5000
appendonly yes
bind 0.0.0.0
8.5 将7001中的redis.conf文件 分别复制到 7002-7006中 更改里面所有是7001的地方更改成 对应的端口号就可以了
8.6 安装ruby的相关的工具(5.0的时候没有使用ruby去创建集群这个步骤可省略)
yum install ruby
yum install rubygems
gem install redis
安装最后一个工具就出错了…
(centos7 安装较高版本ruby2.2/2.3/2.4+)按照步骤玩一次就对了
8.7 开启每一个服务
./redis-server /usr/local/redis-cluster/7001/redis.conf
./redis-server /usr/local/redis-cluster/7002/redis.conf
./redis-server /usr/local/redis-cluster/7003/redis.conf
./redis-server /usr/local/redis-cluster/7004/redis.conf
./redis-server /usr/local/redis-cluster/7005/redis.conf
./redis-server /usr/local/redis-cluster/7006/redis.conf
ps -ef | grep redis
8.8 创建集群
ip为你的虚拟机的ip地址
以前的版本:
./redis-trib.rb create --replicas 1 ip:7001 ip:7002 ip:7003 ip:7004 ip:7005 47.ip:7006
现在的版本
redis-cli --cluster create ip:7001 ip:7002 ip:7003 ip:7004 ip:7005 47.ip:7006 --cluster-replicas 1
yes
登陆集群某一个客户端的命令
./redis-cli -c -h ip -p 7001