Day16_Redis
一、部署Redis
整体流程:下载源码,解压,编译,安装,运行
编写脚本安装
1 |
|
ansible自动化部署
1 |
|
二、基本操作
增
- set k1 v1
- mset k1 v1 k2 v2 … 一次性创建多个键值对
- setnx k1 v1 增加但不覆盖
- msetnx k1 v1 k2 v2 …增加多个但不覆盖
- setex k1 10 v1 设置k1的值10秒清空
删
- flushdb 清空当前库的所有数据
- flushall 清空所有库的数据
- del k1 … 可删除多个
改
- set k1 new_v1 覆盖原来的值
- setrange k1 4 le 将k1的值从0开始的第二位进行替换成le
- append k1 haha 追加
- incr k1 自增1
- decr k1 自减1
查
- select 0~15 redis共有16个库,这是选择库
- get k1 获取k1的值
- mget k1 k2 k3 一次性获取多个值
- getrange k1 4 -1 将k1的值截取从0开始第4位到最后一位打印
- keys * 获取所有的键
- ttl k1 查看k1还剩多久过期
三、RDB和AOF
如果两者都开启,系统会使用AOF,并且每次redis启动都会读取知道目录下的aof或者rdb文件
RDB
会fork一个进程进行数据拷贝,首先先把redis中内存的数据同步到临时存放数据区,之后再同步到dump.rdb这个磁盘文件上
优势
- 文件有压缩,占用磁盘空间小,redis启动快
- 比较稳定
劣势
- 他是根据规定时间内的变动进行备份,有数据丢失风险
- fork的进程会额外占用一份相同的内存空间
AOF
他会实时以日志的方式记录redis的改动,只能追加不能修改文件,appendonly no
优势
- 数据的持久化和一致性高
劣势
- 文件无压缩,磁盘空间占用大,redis启动慢
- 存在个别bug
四、主从模式
1.一主一从
这个模式很简单,只需要在从节点加两行配置就可以
1 | masterauth redis123 #主的密码 |
然后重启服务,进入redis查看info replication 就可以看到信息了
2.一主多从
这个模式是在一主一从的基础上多加几个slave而已,将slave的配置文件加上上面那两行就行
五、哨兵模式sentinel
哨兵模式是在主从的基础上新增的一个服务,他可以单独部署在一台机器上,也可以部署在redis节点上,主从都可以
选主规则
- 优先级小的上
- 偏移量大的上(数据最多)
- runid小的上(redis启动后自动生成,不会相同)
配置过程
创建配置文件/etc/sentinel.conf,目录可自选
添加配置内容
1
2sentinel monitor mymaster IP 6379 1 #mymaster是自定义名字,ip为哨兵部署的主机ip,1为需要多少个哨兵同意,这里只有一台,只能1
sentinel auth-pass mymaster redis123 #mymaster和上面的对应启动哨兵
redis-sentinel /etc/sentinel.conf测试,将主节点关闭服务,就可以看到哨兵模式选新主
六、集群模式
集群至少需要6台(6个redis服务),因资源有限,实验使用三台开6个服务,端口为6379,6380
192.168.146.136 192.168.146.137 192.168.146.138
以下操作若为特别说明,均为三台主机都要操作
- 备份redis.conf配置文件,让每个端口单独使用一份配置文件
1
2cp /etc/redis.conf /etc/redis6379.conf
cp /etc/redis.conf /etc/redis6380.conf - 将配置文件内的端口修改,并修改dir路径为 /var/lib/redis/{6379,6380}两个,对应的端口改成对应的目录,记得创建这个目录
- 创建一个集群目录和配置文件,我这里在加目录下创建
1
2
3
4
5
6
7mkdir ~/redis-cluster
vim 6379.conf #6380也要创建
#6379.conf 6380conf都要添加
include /etc/redis6379.conf
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000 - 启动服务
1
2
3
4redis-server /root/redis-cluster/6379.conf
redis-server /root/redis-cluster/6380.conf
ss -tulpn #查看两个端口是否起来 - 启动集群
redis-cli --cluster create --cluster-replica s 1 192.168.146.136:6379 192.168.146.136:6380 ... #后面几台类推 - 验证集群,终端输入redis-cli -c -a redis123, 然后进行创建key就可以看到他会根据key的槽位来对对应的主机进行创建






