liunx篇】 五. Redis高级

Redis简介,安装及常用命令

中国加油!武汉加油!

篇幅较长,配合右边目录观看

1. 发布订阅模式(不常用)

subscribe 订阅的频道的名称
publish 频道名字 内容

2. 事务(不用)

不能保证原子性,所以不用

命令描述
multi开启事务
exec提交事务

3. 持久化

3.1 rdb模式实现持久化

  1. Redis是基于内存的、所以速度快、但是Redis的数据放到内存里面、当Redis重启的时候 这个数据会发生丢失,为了解决数据丢失的问题,Redis持久化就产生了。
  2. 默认情况下,以rdb模式实现持久化。rdb是数据库默认的持久化模式-----又称为快照模式
  3. 这个模式是将内存的数据内容 直接保存到 dump.rdb这样的一个二进制文件中的
  4. 特点:因为保存的是二进制文件、所以做数据的恢复是相当的快的—适合于做数据的备份
  5. 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实现持久化

  1. aof模式是在redis1.1的版本的时候、才增加的一种持久化模式
  2. aof模式在使用的时候 保存的不是数据 是我们操作的时候的一条一条的命令
  3. 只要调用了Redis 那么只要有命令的使用那么都会被记录到aof文件中
  4. aof---------------记录的是操作的命令 不记录实际的数据
  5. aof模式如果是在数据恢复还原的时候 效率并不高 数据恢复的话采用rdb文件恢复是最快的
  6. 如果是开启了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-ttlkey剩余的寿命的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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值