Linux初学者学习笔记

20171116 Redis

2017-11-18  本文已影响17人  哈喽别样
  • NoSQL
  • Redis基础
  • Redis配置文件基础
  • Redis的持久化
  • Redis的复制
  • Redis的集群

一、NoSQL

(一)基本概念

(二)设计原则

(1)CAP理论:
(2)BASE:BA,S,E,基于CAP演化而来

(三)分类和主流产品

二、Redis基础

(一)简介:

(二)程序环境:

(三)客户端的基本操作

(1)K/V 数据结构
(2)radis-cli工具的使用

SET:新增,GET:查询,APPEND:添加,STRLEN:长度

SETNX:不存在时新增,INCR:自增1,INCRBY count 2:自增2,DEL:删除

LPUSH:从左侧添加,LINDEX weekdays 0:查看索引为0的元素值

LRANGE weekdays 0 4:查看索引0至4的元素值
LINSERT weekdays AFTER Tue Wed:在元素后Tue插入Wed

LPOP:左侧移除,RPOP:右侧移除,LLEN:list的长度

SADD:添加成员,SMEMBERS:查看成员

SINTER:查看交集结果,SUNION:查看并集结果

SREM:删除指定成员,SPOP:随机删除成员

ZADD:添加有序集合的成员,ZSCORE:查看成员所赋予的值

ZRANK:查看指定成员的排序,ZRANGE:查看指定排序范围的成员,ZRANGEBYSCORE:查看指定排序范围的成员

HMSET:在一个hash中创建多个键值对,HKEYS:查看键,HVALS:查看键对应的值

HGETALL:查看hash的所有键值对,HDEL:删除键值对

PUBLISH:扇出信息

SUBSCRIBE:订阅并接受信息

CONFIG SET:实时修改配置

CONFIG REWRITE:配置文件中自动生成相应配置信息

INFO:服务器状态信息

三、Redis配置文件基础

设置密码后,在redis-cli中使用AUTH password命令验证密码

四、Redis的持久化

(一)持久化的两种方式

(二)RDB相关的配置:

(三)AOF相关的配置

(四)其他

五、Redis的复制

(一)特点:

(二)方法一:配置slave节点

(三)方法二:配置参数

(1)必须配置的参数
(2)其他视情况配置的参数

(四)实验1:实现Redis的复制

(1)编辑主从节点的配置文件,修改监听IP,配置密码认证
vim /etc/redis.conf
bind 0.0.0.0
requirepass centos
(2)编辑从节点1的配置文件
slaveof 192.168.136.230 6379     // 指向主节点的IP和端口
masterauth centos                // 主节点的认证密码
(3)通过redis-cli命令配置从节点2的设置
redis-cli -h 192.168.136.131
192.168.136.131:6379> AUTH centos
192.168.136.131:6379> SLAVEOF 192.168.136.230 6379     // 指向主节点的IP和端口
192.168.136.131:6379> CONFIG SET masterauth centos     // 主节点的认证密码
192.168.136.131:6379> CONFIG GET masterauth
192.168.136.131:6379> CONFIG GET slave-read-only
192.168.136.131:6379> CONFIG REWRITE                   // 写入配置文件
(4)启动主次节点的服务,测试配置

主节点上查看连接的从节点:127.0.0.1:6379> CLIENT LIST

主节点查看Replication章节的信息,可以看到从节点的相关信息

从节点1查看Replication章节的信息,可以看到主节点IP和当前连接状态

从节点2查看Replication章节的信息,可以看到主节点IP和当前连接状态

主节点查看所有键

从节点1查看所有键,成功同步

从节点2查看所有键,成功同步

(五)sentinel

(1)sentinel简介
(2)配置项
(3)命令行选项

redis-cli -h SENTINEL_HOST -p SENTINEL_PORT
SENTINEL masters:查看主节点
SENTINEL slaves <MASTER_NAME>:查看指定主节点的从节点
SENTINEL failover <MASTER_NAME>
SENTINEL get-master-addr-by-name <MASTER_NAME>

(六)实验2:实现sentinel监控主机状态,当主节点发生故障时自动转移

(1)编辑三台主机的sentinel配置文件
vim /etc/redis-sentinel.conf
bind 0.0.0.0
sentinel monitor mymaster 192.168.136.230 6379 2
sentinel auth-pass mymaster centos
sentinel down-after-milliseconds mymaster 30000
(2)启动redis-sentinel服务,并测试
systemctl start redis-sentinel
登录sentinel服务器
redis-cli -h 192.168.136.230 -p 26379
SENTINEL masters             // 查询主节点信息
SENTINEL slaves mymaster     // 查询从节点信息

SENTINEL masters,查询主节点信息,当前为192.168.136.230,符合预期

SENTINEL slaves mymaster,查询从节点信息,当前为192.168.136.130和192.168.136.131,符合预期

(3)关闭主节点的redis服务,造成宕机状况,测试故障转移功能
systemctl stop redis         // 192.168.136.230主机上操作
redis-cli -h 192.168.136.131 -p 26379
SENTINEL masters             // 查询主节点信息
SENTINEL slaves mymaster     // 查询从节点信息

192.168.136.130已经变为主节点

192.168.136.230已经降为从节点,由于宕机目前不可用

192.168.136.131仍旧保持从节点的身份

(4)修复主机192.168.136.230,并重新上线
vim /etc/redis.conf
slaveof 192.168.136.130 6379     // 设置为新的主节点IP
masterauth centos
systemctl start redis

成功上线

六、Redis的集群

(一)redis的集群技术:

Twitter:twemproxy,Twitter已经不再使用
豌豆荚:codis
原生:redis cluster

(二)redis cluster集群相关的配置:

(三)实验3:实现redis集群

(1)设置配置文件,启用集群功能
vim /etc/redia.conf     // 每个节点都要如此设置
cluster-enabled yes
cluster-config-file nodes-6379.conf
systemctl restart redis
(2)启动redis后为每个节点分配slots
systemctl restart redis
redis-cli -h 192.168.136.230 -a centos CLUSTER ADDSLOTS {0..5461}
redis-cli -h 192.168.136.130 -a centos CLUSTER ADDSLOTS {5462..10923}
redis-cli -h 192.168.136.131 -a centos CLUSTER ADDSLOTS {10924..16383}

注意:每个slot要独立创建;可用范围是0-16383,共16384个

使用CLUSTER INFO查看集群信息,可以看到已经分配相应数量的slot,但是集群状态还是fail

(3)设定集群成员关系
redis-cli -h 192.168.136.230 -a centos
CLUSTER MEET 192.168.136.130 6379
CLUSTER MEET 192.168.136.131 6379
CLUSTER INFO

再次使用CLUSTER INFO查看集群信息,集群状态已经ok状态

(4)测试集群功能
redis-cli -h 192.168.136.230 -a centos
192.168.136.230:6379> SET testkey1 hi
OK
192.168.136.230:6379> SET testkey2 hello
(error) MOVED 14758 192.168.136.131:6379
// 返回结果要求到192.168.136.131的节点执行操作
redis-cli -h 192.168.136.131 -a centos
192.168.136.131:6379> SET testkey2 hello
OK
192.168.136.131:6379> SET testkey3 sayhello
(error) MOVED 10631 192.168.136.130:6379

192.168.136.230成功存储testkey1键值对,但是节点要求去192.168.136.131存储testkey2键值对

192.168.136.131成功存储testkey2键值对,但是节点要求去192.168.136.130存储testkey3键值对

注意:当对redis cluster中的某个节点写数据时,可能会要求存储至其他节点。即可以向任意一个节点发起请求,节点可能会接收请求,也可能返回去其他节点完成操作的结果。故实际使用中,redis cluster需要与智能客户端协同发挥功能。

上一篇 下一篇

猜你喜欢

热点阅读