Redis 常用命令:
1: 返回满足的所有键 keys * (可以模糊匹配 例: keys list*)2: 是否存在指定的key exists
3: expire 设置某个key的过期时间,可以使用ttl [key] 查看剩余时间
4: persist 取消过期时间
5: select 选择数据库 数据库为0到15(一共16个数据库)默认进入的是0数据库
6: move [key] [数据库下标]当前数据库中的key转移到其他数据库中
7: randomkey 随机返回数据库里的一个key
8: rename 重命名key
9: echo 打印命令
10: dbsize 查看数据库的key的数量
11: info获取数据库信息
12: config get 返回相关redis的配置信息
cinfig get * 查看所有配置信息
13: flushdb 清空当前数据库,flushall 清空所有数据库
redis 主从复制
1: Master可以拥有多个slave
2: 多个slave可以连接同一个Master外,还可以链接到其他的slave
3: 主从复制不会阻塞master,在同步数据时 master可以继续处理clinet请求
4: 提供系统的伸缩性
主从复制过程:
1:slave与master建立链接,发送sync同步命令
2:master会开启一个后台进程,将数据库快照保存到文件中,同事master主进程会开始收集新的写命令并缓存
3:后台完成保存后,就将文件发送到slave
4:slave将此文件保存到硬盘上
主从复制配置:
1:修改配置文件:redis.config(主服务器不用修改,只修改从服务器)
第一步:slaveof <masterip> <mastport>
第二步:masterauth <masterpassword>
如果从服务器连接不上主服务器 (Error condition on socket for SYNC: Connection reset by peer)
1:确认防火墙问题
2:查看主服务器的redis.config
一、是否 bind ip(注释掉)
二、protected-mode yes 改为 no
可以使用info 查看服务器信息
注:在使用的时候,直接使用一个实例即可,不用为没一个从服务器都进行实例,服务会自动进行负载。
redis 哨兵
有了主从复制的实现以后,我们如果想对主从服务器进行监控,那么在redis2.6以后提供了一个“哨兵”的机制,在2.6版本中的哨兵为1.0版本,并不稳定,会出现各种各样的问题。在2.8以后的版本哨兵功能才稳定起来。
顾名思义 ,哨兵的含义就是监控Redis系统的运行状况,其主要功能有两点:
1:监控主数据库和从数据库是否正常运行。
2: 住数据库出现故障时,可以自动将从数据库转换为主数据库,实现自动切换。
实现步骤:
1:修改sentinel.conf:
sentinel monitor 哨兵名称 主数据库ip 主数据库端口 投票选举次数
sentinel down-after-milliseconds 哨兵名称 5000 这里配置超时5000毫秒为宕机
sentinel failover-timeout 哨兵名称 90000
sentinel parallel-syncs 哨兵名称 2
sentinel can-failover mymaster yes
2: 启动sentinel 哨兵
**/**/redis-server **/**/sentinel.conf --sentinel &
3 查看哨兵相关信息名称
**/redis-cli -h ip地址 -p 26379 info Sentinel
注:哨兵模式在主redis,闪断闪连(例如由于网络原因导致,极短时间内的网络连接失败)的情况下会出现数据丢失
redis集群的搭建
集群搭建:至少要三个master(在这里我是在同一台电脑,开启不同端口的方式建立集群)
第一步:
创建一个文件夹redis-cluster,然后在其下面分别创建6个文件夹如下
1:mkdir -p /usr/local/redis-cluster
2: mkdir 7001,mkdir 7002,mkdir 7003,mkdir 7004,mkdir 7005,mkdir 7006
第二步:
把之前的redis.conf配置文件分别copy到 700* 下,进行修改各个文件内容,也就是对 700*下的没一个copy的redis.conf文件进行修改!
1:daemonize yes 改为后台启东
2:port 700* 修改端口
3:bind 192.168.142.128 绑定当前机器的ip地址
4:dir "/usr/local/redis-cluster/7001/" 指定数据文件夹存放位置,必须要指定不同的目录位置,不然会丢失数据)
5:cluster-enabled yes (启动集群模式)
6:cluster-config-file nodes-700*.conf (这里700*最好和port对应上)
7:cluster-node-timeout 5000
8:appendonly yes (开启aof备份模式)
第三步:
把修改后的配置文件,分别 cipy到各个文件夹下,注意每个文件要修改端口号,并且nodes文件也要不相同!
第四部:
由于redis集群需要使用ruby命令,所以我们需要安装ruby
1:yum install ruby
2:yum install rubygems
3:gem install redis (安装redis和ruby 的接口)
第五步:
1:启动所有的redis
第六步:
1:./redis-3.2.8/src/redis-trib.rb create --replicas 1 192.168.142.128:7001 192.168.142.128:7002 192.168.142.128:7003 192.168.142.128:7004 192.168.142.128:7005 192.168.142.128:7006
开启成功进行测试:
连接任意一个节电: /usr/local/redis/bin/redis-cli -c -h 192.168.142.128 -p 700*
2:进行验证:cluster info(查看集群信息)、cluster nodes(查看节点列表)
3:进行数据操作验证
4:关闭集群则需要逐个进行关闭,使用命令
/usr/local/redis/bin/redis-cli -c -h 192.168.142.128 -p 700* shutdown
注:当出现集群无法启动时,删除临时的数据库文件,再次重新启动每个redis服务,然后重新构造集群环境