redis 常用命令记录以及redis 读写分离

时间:2022-09-30 20:32:08



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服务,然后重新构造集群环境