11.Redis集群入门

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

一、集群配置

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

《11.Redis集群入门》 Redis5版本的集群需要至少6个节点

1. 创建配置目录

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

《11.Redis集群入门》 集群节点工作目录

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

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

《11.Redis集群入门》 集群配置文件

3. 修改配置文件

3.1. 修改bind配置

  注意不能使用回旋IP:

《11.Redis集群入门》 集群IP配置

3.2. 修改端口

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

《11.Redis集群入门》 集群端口配置

3.3. 配置后台运行

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

《11.Redis集群入门》 集群后台配置

3.4. 设置非保护模式

  也是集群的非必须选项。

《11.Redis集群入门》 集群非保护模式

3.5. 配置进程锁文件

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

《11.Redis集群入门》 集群进程锁文件配置

3.6. 配置集群模式

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

《11.Redis集群入门》 集群配置

3.7. 集群节点配置文件

《11.Redis集群入门》 集群节点文件

3.8. 配置集群节点的延时

《11.Redis集群入门》 集群节点延时配置

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

《11.Redis集群入门》 集群几点数据库等文件存放目录

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集群入门》 集群创建脚本文件

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集群入门》 集群启动结果

启动的节点的进程状态:

《11.Redis集群入门》 集群启动的进程状态查看

启动阶段服务的网络状态

《11.Redis集群入门》 集群启动的网络状态

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集群入门》 集群启动效果

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

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

《11.Redis集群入门》 每个节点数据库目录下产生的文件

二、从redis-cli访问集群

1. 集群连接

  注意使用-c选项。

./bin/redis-cli -c -h 192.168.31.140 -p 6379

《11.Redis集群入门》 使用redis-cli访问集群

2. 集群管理命令帮助

help @cluster

《11.Redis集群入门》 集群的帮助查看

3. 集群信息查看

指令:


192.168.31.140:6379> cluster info

《11.Redis集群入门》 集群信息

4. 集群节点信息


192.168.31.140:6379> cluster nodes

《11.Redis集群入门》 集群节点信息

5. 集群节点数据操作

《11.Redis集群入门》 集群下的数据操作

三、Redis的Python集群编程

1. 安装python的redis集群模块

  安装指令

pip install redis-py-cluster

《11.Redis集群入门》 安装Python集群API模块

2. rediscluster模块帮助

《11.Redis集群入门》 API帮助

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

《11.Redis集群入门》 集群的客户访问类

其构造器为:

__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'

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

    原文作者:杨强AT南京
    原文地址: https://www.jianshu.com/p/673069c6668f
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞