11.Redis集群入门

本主题,介绍了Redis的集群配置与编程入门,其实Redis的集群还包含主从集群模式,哨兵集群模式(Redis 5在集群配置上有比较大的变化),在本主题没有做详细介绍。
本主题包含内容如下:
  1. Redis集群配置;
  2. Redis集群访问;
  3. Redis集群编程;


一、集群配置

注意:
  Redis集群要求至少6个节点。
下面是三个节点启动提示的错误。

11.Redis集群入门_第1张图片
Redis5版本的集群需要至少6个节点

1. 创建配置目录

创建集群的6个节点的工作目录,用来存放配置文件与数据库文件。


11.Redis集群入门_第2张图片
集群节点工作目录

2. 拷贝配置文件到每个节点目录

  拷贝Redis安装文件下的redis.conf到每个节点目录:

11.Redis集群入门_第3张图片
集群配置文件

3. 修改配置文件

3.1. 修改bind配置

  注意不能使用回旋IP:


11.Redis集群入门_第4张图片
集群IP配置

3.2. 修改端口

  因为在本机配置6个节点,采用相同的IP,不同的端口,端口从默认的6379,依次6个端口:6380,6381,8382,6383,6384。


11.Redis集群入门_第5张图片
集群端口配置

3.3. 配置后台运行

  这个不是集群必须的,主要是因为不需要独占终端。


11.Redis集群入门_第6张图片
集群后台配置

3.4. 设置非保护模式

  也是集群的非必须选项。


11.Redis集群入门_第7张图片
集群非保护模式

3.5. 配置进程锁文件

  每个节点的进程锁文件设置不同。


11.Redis集群入门_第8张图片
集群进程锁文件配置

3.6. 配置集群模式

  该设置会用集群模式启动节点。

11.Redis集群入门_第9张图片
集群配置

3.7. 集群节点配置文件

11.Redis集群入门_第10张图片
集群节点文件

3.8. 配置集群节点的延时

11.Redis集群入门_第11张图片
集群节点延时配置

3.9. 配置每个节点的数据库存放目录

11.Redis集群入门_第12张图片
集群几点数据库等文件存放目录

4. 所有节点的配置

  (1)绑定端口,port 6379
  (2)绑定IP,bind 192.168.1.140
  (3)指定数据存放路径,dir /Users/yangqiang/redis5/cluster/node1
  (4)启动集群模式,cluster-enabled yes
  (5)指定集群节点配置文件,cluster-config-file nodes-6379.conf
  (6)后台启动,daemonize yes
  (7)指定集群节点超时时间,cluster-node-timeout 5000
  (8)指定持久化方式,appendonly yes
  (9)指定保护模式,protected-mode no
  
注意:
  上面黑体标注的部分是不同节点需要修改的部分。
  不过其中节点存放目录使用端口作为后缀,使用redis的工具脚本容易更好的管理。可以研究redis安装目录下utils/create-cluster的create-cluster脚本文件。

11.Redis集群入门_第13张图片
集群创建脚本文件

5. 启动集群的每个节点

  启动集群节点的指令:


./bin/redis-server  ./cluster/node1/redis.conf
./bin/redis-server  ./cluster/node2/redis.conf
./bin/redis-server  ./cluster/node3/redis.conf 
./bin/redis-server  ./cluster/node4/redis.conf 
./bin/redis-server  ./cluster/node5/redis.conf 
./bin/redis-server  ./cluster/node6/redis.conf 

启动效果如下:


11.Redis集群入门_第14张图片
集群启动结果

启动的节点的进程状态:


11.Redis集群入门_第15张图片
集群启动的进程状态查看

启动阶段服务的网络状态


11.Redis集群入门_第16张图片
集群启动的网络状态

6. 启动集群

  启动集群的指令

./bin/redis-cli --cluster create 192.168.31.140:6379  192.168.31.140:6380 192.168.31.140:6381 192.168.31.140:6382 192.168.31.140:6383 192.168.31.140:6384 --cluster-replicas 1

集群启动效果:

11.Redis集群入门_第17张图片
集群启动效果

7. 启动集群后的节点文件

  启动节点后,每个节点目录下产生的文件如下:


11.Redis集群入门_第18张图片
每个节点数据库目录下产生的文件

二、从redis-cli访问集群

1. 集群连接

  注意使用-c选项。

./bin/redis-cli -c -h 192.168.31.140 -p 6379
11.Redis集群入门_第19张图片
使用redis-cli访问集群

2. 集群管理命令帮助

help @cluster
11.Redis集群入门_第20张图片
集群的帮助查看

3. 集群信息查看

指令:


192.168.31.140:6379> cluster info

11.Redis集群入门_第21张图片
集群信息

4. 集群节点信息


192.168.31.140:6379> cluster nodes

11.Redis集群入门_第22张图片
集群节点信息

5. 集群节点数据操作

11.Redis集群入门_第23张图片
集群下的数据操作

三、Redis的Python集群编程

1. 安装python的redis集群模块

  安装指令

pip install redis-py-cluster

11.Redis集群入门_第24张图片
安装Python集群API模块

2. rediscluster模块帮助

11.Redis集群入门_第25张图片
API帮助

其中根据使用经验,用户访问模块应该是client,其帮助如下:


11.Redis集群入门_第26张图片
集群的客户访问类

其构造器为:

__init__(self, host=None, port=None, startup_nodes=None, max_connections=None, max_connections_per_node=False, init_slot_cache=True, readonly_mode=False, reinitialize_steps=None, skip_full_coverage_check=False, nodemanager_follow_cluster=False, connection_class=None, **kwargs)

3. Redis集群编程模式

# coding = utf-8
import rediscluster.client
startup_nodes = [
    {"host":"192.168.31.140", "port":6379},
    {"host":"192.168.31.140", "port":6380},
    {"host":"192.168.31.140", "port":6381},
    {"host":"192.168.31.140", "port":6382},
    {"host":"192.168.31.140", "port":6383},
    {"host":"192.168.31.140", "port":6384}
]
cluster_conn = rediscluster.client.RedisCluster(startup_nodes=startup_nodes)
str_data = cluster_conn.get('py_user')
print(str_data)
b'this is a cluster'

其他的操作与但节点一样,对编程者是透明的。


你可能感兴趣的:(11.Redis集群入门)