redis下载安装(编译安装)
  • 下载redis源码
# 切换到opt目录下
cd /opt

# 下载redis压缩包
wget  http://download.redis.io/releases/redis-4.0.10.tar.gz
  • 安装
# 解压压缩包
tar -zxvf redis-4.0.10.tar.gz

# 切换到redis源码目录
cd redis-4.0.10

# 编译源文件
make && make install

# 编译好后,src/下面有编译好的redis指令
  • 配置文件
# 在/opt下创建存放redis配置的目录
mkdir /opt/redis-conf

# 创建配置文件
vim /opt/redis-conf/redis-6379.conf
  • 编写配置
port 6379                         # 运行在6379的redis数据库实例
daemonize yes                     # 后台运行redis  
pidfile /data/6379/redis.pid      # 存放redis pid的文件
loglevel notice                   # 日志等级
logfile "/data/6379/redis.log"    # 指定redis日志文件的生成目录
dir /data/6379                    # 指定redis数据文件夹的目录
protected-mode yes                # 安全模式
requirepass   haohaio             # 设置redis的密码


"""
注意:1./data/6379/这个目录要先创建,不然会报错

     2.配置文件中不要有注释,

"""
redis的基本使用
  • 启动redis服务
# 指定用哪个配置来启动
redis-server /opt/redis-conf/redis-6379.conf
  • 启动redis客户端
# 根据服务配置的端口指定端口,有密码加 -a password
redis-cli -p6370
  • 数据类型(5种)
strings         # 字符串

hashes          # 散列

lists           # 列表

sets            # 集合

sorted  sets    # 有序集合
  • strings常用方法
set     # 插入数据

get     # 获取

append  # 追加(string)

mset    # 设置多个键值对

mget    # 获取多个键值对

del     # 删除

incr    # 递增+1

decr    # 递减-1
  • strings基本使用
# 设置数据
set name aaa            # key:name   value:aaa

# 获取key
keys *          # 拿到redis中所有的key

# 根据key来取值
get name

# 根据key追加值
append name 'bbb'

# 设置多个key value
mset name 'aaa' age '18'

# 获取多个value
mget name age

# 删除key
del name
  • lists常用方法
lpush               # 从列表左边插入

rpush               # 从列表右边插入

lrange              # 获取一定长度的元素

ltrim               # 截取一定长度的列表

lpop                # 删除最左边的元素

rpop                # 删除最右边的元素

lpushx/rpushx       # key存在则添加值,不存在不处理
  • lists基本使用
lpush duilie 'alex' 'peiqi' 'ritian'  # 新建一个duilie,从左边放入三个元素

llen duilie  # 查看duilie长度

lrange duilie 0 -1  # 查看duilie所有元素

rpush duilie 'aaa'   # 从右边插入aaa

lpushx duilie2  'dsb'  # key存在则添加 dsb元素,key不存在则不作处理

ltrim duilie 0 2  # 截取队列的值,从索引0取到2,删除其余的元素

lpop             # 删除左边的第一个

rpop             # 删除右边的第一个
redis发布订阅
# 发布消息
PUBLISH aaa 'hello'     # 将hello发布到aaa频道

# 订阅
SUBSCRIBE aaa           # 订阅aaa频道

# 取消订阅
UNSUBSCRIBE  aaa        # 取消订阅aaa频道
redis持久化存储
  • RDB
# RDB(redis database)

# 需要手动save保存   
  • 配置
port 6379                        
daemonize yes                     
pidfile /data/6379/redis.pid     
loglevel notice                  
logfile "/data/6379/redis.log"    
dir /data/6379                                       
protected-mode yes               
requirepass   haohaio   
dbfilename  dbmp.rdb                        # 持久化存储的文件名

save 900 1          # rdb机制,每900s 内存种有一个修改记录就自动存储
save 300 1          # 每 300s     10个修改记录
save 60 10000       # 每60s          10000修个记录       
  • AOL
# AOL(append-only logfile)
  • 配置
# 在rdb的配置上添加一下配置
appendonly yes
appendfsync everysec
  • RDB VS AOL
rdb: 
    """
    优点: 1.适合备份    2.恢复大数据集时速度比AOF快
    缺点: 1.手动save    2.耗时长  3.备份时宕机数据易丢失
    """
   
AOL:
    """
    优点: 1.追加到日志文件后面     2.数据不易丢失
    缺点: 1.速度较慢  2.文件体积较大    
    """
redis的主从同步
  • 准备
# 准备三个redis库
redis-6379.conf
redis-6380.conf
redis-6381.conf

# 配置三个配置文件的信息,同时在redis-6380.conf/redis-6381.conf添加配置
slaveof 127.0.0.1 6379

# 在data中创建三个文件夹6379/,6380/,6381/
  • 启动三个redis服务
redis-server -p 6379 /opt/redis-conf/redis-6379.conf
redis-server -p 6380 /opt/redis-conf/redis-6380.conf
redis-server -p 6381 /opt/redis-conf/redis-6381.conf
  • 启动客户端
# 启动6379客户端
redis-cli -p 6379 

# 插入数据
set name 'aaa'

# 退出
exit
  • 检测同步是否成功
# 登录6380客户端
redis-cli -p 6380

# 检测数据是否存在
keys *

# 退出6380,登录6381检测
  • 故障时身份切换
# kill 6379进程,模拟主库挂掉
kill -9 进程id
  • 更改主库信息
# 登录6380
redis-cli -p 6380

# 更改slaveof信息
slaveof no one

# 退出6380
exit
  • 更改从库信息
# 登录6381
redis-cli -p 6381

# 更改从库信息
slave no one
slave 127.0.0.1 6380
  • 查看主从库信息
redis-cli -p 6380 info replication
redis-cli -p 6381 info replication
redis-sentinel(哨兵vsredis相互独立,有木有关系)
  • 准备
# redis库的准备,同上,准备三个独立的redis库
  • 配置
# redis库配置同上

# 配置三个哨兵
cd /opt/redis_conf
vim redis-26380.conf
vim redis-26381.conf
vim redis-26382.conf

# 写入三个配置文件
port 26379                  # 哨兵的端口
dir /var/redis/data/
logfile "26379.log"
sentinel monitor mymaster 127.0.0.1 6379 2      # 监听主库的端口
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
daemonize yes
  • 启动哨兵
[root@qishi666 redis_conf]# redis-sentinel redis-26379.conf 
[root@qishi666 redis_conf]# redis-sentinel redis-26380.conf 
[root@qishi666 redis_conf]# redis-sentinel redis-26381.conf
  • 查看哨兵是否成功通信
redis-cli -p 26379 info sentinel
  • 常见问题
"""
1. 如果哨兵没有正常启动,那么就在哨兵的配置文件中的ip信息检验

2. 如果哨兵没有正常通信,那么就从主从同步开始重新配置

"""
redis集群
  • 准备节点
vim redis-7000.conf
vim redis-7001.conf
vim redis-7002.conf
vim redis-7003.conf
vim redis-7004.conf
vim redis-7005.conf
  • 写入配置
port 7000
daemonize yes
dir "/opt/redis/data"
logfile "7000.log"
dbfilename "dump-7000.rdb"
cluster-enabled yes                 # 开始集群模式
cluster-config-file nodes-7000.conf         # 集群内部的配置文件

# 不同配置文件的端口不同
  • 启动6个节点
redis-server redis-7000.conf
redis-server redis-7001.conf
redis-server redis-7002.conf
redis-server redis-7003.conf
redis-server redis-7004.conf
redis-server redis-7005.conf
  • 验证
# 随便登录一个端口,写入数据
(error)CLUSTERDOWN Hash slot not served     # 报错,没有hash槽
  • 准备ruby环境
# 下载ruby
wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz
    
# 安装ruby
tar -xvf ruby-2.3.1.tar.gz

# 释放源
./configure --prefix=/opt/ruby/

# 编译
make && make install

# 配置环境变量
PATH=$PATH:/opt/ruby/bin
  • 安装ruby gem管理工具
wget http://rubygems.org/downloads/redis-3.3.0.gem
    
gem install -l redis-3.3.0.gem


#查看gem有哪些包
gem list -- check redis gem

# 安装redis-trib.rb命令
root@yugo /opt/redis/src 18:38:13]#cp /opt/redis/src/redis-trib.rb /usr/local/bin/
  • 一键开始redis-cluster集群
redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
  • 查看集群状态
redis-cli -p 7000 cluster info  

redis-cli -p 7000 cluster nodes  #等同于查看nodes-7000.conf文件节点信息

# 集群主节点状态
redis-cli -p 7000 cluster nodes | grep master

# 集群从节点状态
redis-cli -p 7000 cluster nodes | grep slave
  • 测试写入数据
# 登录集群必须使用redis-cli -c -p 7000必须加上-c参数
  • 参考文档

http://doc.redisfans.com/

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。