allbet登录官网:Redis 6.0 redis-cluster-proxy 说明,Redis Cluster 原理相关说明,redis-cli --cluster help说明

admin 3个月前 (07-09) 科技 52 0

靠山

       Redis3.0版本之后最先支持了Redis Cluster,Redis也最先有了分布式缓存的观点。关于Redis Cluster的相关说明,可以看之前的几篇文章:Redis Cluster 原理相关说明、redis-cli --cluster help说明。其架构如下:

由于 Redis Cluster 内部使用的是P2P中的Gossip协议,每个节点既可以从其他节点获得服务,也可以向其他节点提供服务,没有中央的观点,通过一个节点可以获取到整个集群的所有信息。以是若是应用毗邻Redis Cluster可以设置一个节点地址,也可以设置多个节点地址。但需要注重若是集群举行了上下节点的的操作,其应用也需要举行修改,这样会导致需要重启应用,异常的不友好。从Redis 6.0最先支持了Prxoy,可以直接用Proxy来治理各个集群节点。本文来先容下若何使用官方自带的proxy:redis-cluster-proxy

说明

       通过使用 redis-cluster-proxy 可以与组成Redis集群的一组实例举行通讯,就像是单个实例一样。Redis群集署理是多线程的,使用多路复用通信模子,因此每个线程都有自己的与群集的毗邻,该毗邻由属于该线程自己的所有客户端共享。

  在某些特殊情形下(例如MULTI事务或壅闭下令),多路复用将被禁用;而且客户端将拥有自己的集群毗邻。这样客户端仅发送诸如GET和SET之类的简朴下令就不需要Redis集群的专有毗邻。

redis-cluster-proxy的主要功效:

  • 路由:每个查询都市自动路由到集群的准确节点
  • 多线程
  • 支持多路复用和专用毗邻模子
  • 在多路复用上下文中,可以确保查询执行和回答顺序
  • 发生ASK | MOVED错误后自动更新集群的设置:当回答中发生此类错误时,署理通过获取集群的更新设置并重新映射所有插槽来自动更新集群。 更新完成后所有查询将重新执行,因此,从客户端的角度来看,一切正常举行(客户端将不会收到ASK | MOVED错误:他们将在收到请求后直接收到预期的回复) 群集设置已更新)。
  • 跨槽/跨节点查询:支持许多下令,这些下令涉及属于差别插槽(甚至差别集群节点)的多个键。这些下令会将查询分为多个查询,这些查询将被路由到差别的插槽/节点。 这些下令的回复处置是特定于下令的。 某些下令(例如MGET)将合并所有回答,就好像它们是单个回答一样。 其他下令(例如MSET或DEL)将汇总所有回答的效果。 由于这些查询实际上损坏了下令的原子性,因此它们的用法是可选的(默认情形下禁用)。 
  • 一些没有特定节点/插槽的下令(例如DBSIZE)将通报到所有节点,而且将对映射的回复举行映射缩减,以便得出所有回复中包罗的所有值的总和。
  • 可用于执行某些特定于署理的操作的附加PROXY下令

安装

  1.  下载

    git clone https://github.com/RedisLabs/redis-cluster-proxy.git
  2. 安装

    -- 安装
    make
    
    -- 32位二进制文​​件
    make 32bit
    
    -- 安装详细信息,请使用V选项
    make V=1
    
    -- 重修依赖关系
    make distclean
    
    -- 启动测试
    make test

    注重:默认情形下,安装redis-cluster-proxy,需要设置环境变量REDIS_HOME(/etc/profile),gcc版本必须大于4.9,即:

    REDIS_HOME=/usr/local/redis6.0/
    export PATH=$PATH:$REDIS_HOME/bin

    使用make安装,安装乐成之后,执行文件proxy目录的在src下,若是使用 make install,则安装乐成之后,执行文件在/usr/local/bin目录中

使用说明

基本用法:

./redis-cluster-proxy CLUSTER_ADDRESS

说明:CLUSTER_ADDRESS是任何群集实例的主机地址(入口点),通过IP:PORT的形式示意TCP毗邻,或者通过指定文件名将其示意为UNIX套接字。如:

./redis-cluster-proxy 127.0.0.1:6379
./redis-cluster-proxy /path/to/entry-point.socket

help说明:

redis-cluster-proxy -h
Usage: redis-cluster-proxy [OPTIONS] [node1_host:node1_port,node2_host:node2_port,...]
  -c <file>            指定设置文件
  -p, --port <port>    Proxy端口,默认7777;使用0克制TCP毗邻Proxy
  --maxclients <n>     最大客户端毗邻,默认10000
  --threads <n>        线程数设置,默认8,最大500
  --tcpkeepalive       TCP活跃毗邻时间,默认300秒
  --tcp-backlog        TCP毗邻中已完成行列(完成三次握手之后)的长度,默认511
  --daemonize          是否后台执行
  --pidfile <path>     指定pid文件,如/var/run/redis-cluster-proxy.pid
  --logfile <path>     定日志文件,默认情使用STDOUT。若是daemonize开启,并未指定日志文件,则该署理完全不会纪录日志。
  --unixsocket <sock_file>   套接字路径,默认空
  --unixsocketperm <mode>    套接字权限,默认0
  --bind <address>           绑定一个地址(可以多次使用绑定多个地址)
  --connections-pool-size <size>        毗邻池的巨细,0禁用毗邻池。默认值:10,最大值:50
  --connections-pool-min-size <size>    毗邻池中的最小毗邻数。 低于此值,线程将以界说的速率最先重新天生毗邻,直到池再次变满。 默认值:10   
  --connections-pool-spawn-every <ms>   重新天生毗邻池中毗邻的时间距离(以毫秒为单元)。 默认值:50
  --connections-pool-spawn-rate <num>   每个周期在毗邻池中重新发生的毗邻数。 默认值:2
  --disable-multiplexing <opt>          何时应禁用多路复用值:(auto|always)(默认值:auto)
  --enable-cross-slot       启用跨槽查询(注重:路由到多个节点的跨槽查询不能是原子的)
  -a, --auth <passw>        毗邻密码
  --auth-user <name>        毗邻用户
  --disable-colors          克制彩色输出
  --log-level <level>       日志级别:debug|info|success|warning|error,默认info
  --dump-queries        转储查询参数(仅适用于日志级别的debug)
  --dump-buffer         转储查询缓冲区(仅用于日志级别的debug)
  --dump-queues         转储请求行列(仅适用于日志级别的debug) 
  -h, --help            打印辅助

说明:默认情形下,redis-cluster-proxy端口是7777,使用-p或--port选项对其举行更改。 此外,默认情形下,Redis群集端口将绑定所有可用的网络接口以侦听传入的毗邻。使用--bind选项绑定到特定接口。 可以绑定一个接口,也可以通过多次使用--bind选项来绑定多个接口。

还可以通过使用--unixsocket选项指定套接字文件名,或者使用--unixsocketperm设置套接字文件权限,来告诉Redis集群端口侦听UNIX套接字。若是只想在UNIX套接字上侦听,请将--port设置为0,以使署理完全不在TCP套接字上侦听。

例子

① 监听7888端口

./redis-cluster-proxy --port 7888 127.0.0.1:7000

② 绑定地址:127.0.0.1

./redis-cluster-proxy --bind 127.0.0.1 127.0.0.1:7000

③ 绑定多个接口

./redis-cluster-proxy --port 7888 --bind 192.168.0.10 --bind 10.0.0.10 127.0.0.1:7000

④ 在UNIX套接字上侦听并禁用TCP毗邻

./redis-cluster-proxy --unixsocket /path/to/proxy.socket --port 0 127.0.0.1:7000

⑤ 更改线程数

./redis-cluster-proxy --port 7888 127.0.0.1:7000 --threads 16

⑥ 使用设置文件:在Redis Cluster Proxy的主目录内找到一个示例proxy.conf文件

redis-cluster-proxy -c /path/to/my/proxy.conf 127.0.0.1:7000

启动后,毗邻到署理,就好像是通俗的Redis服务器一样(然则请确保领会当前的限制)。

专用毗邻池 

每个线程都有自己的毗邻池,其中包罗到集群的随时可用的专用毗邻,该集群的套接字在确立时即已预先毗邻。这允许需要专用毗邻(即在执行诸如MULTI之类的下令或壅闭下令之后)的客户端立刻使用可能已经毗邻到群集的毗邻,而不是从头最先重新毗邻到群集(这种情形可能会减慢顺序的速率)从客户端自己的角度执行查询)。

每个毗邻池都有预界说的巨细,而且不允许确立超出其巨细允许的毗邻数的毗邻。可以通过--connections-pool-size选项设置毗邻池的巨细(默以为10)。当池中的毗邻用完时,每个需要专用毗邻的新客户端都将从头最先确立一个新的专用毗邻,它必须毗邻到集群并守候毗邻确立。在这种情形下,毗邻模子将是“惰性的”,这意味着仅当查询需要与该节点的毗邻时,新毗邻的套接字才会毗邻到群集的特定节点。

若是毗邻数降至指定的最小值以下后,每个线程将重新填充其自己的池,默认情形下,该数目与池自己的巨细相同,而且可以通过--connections-pool-min-巨细选项。填充速率和距离可以由--connections-pool-spawn-every(距离以毫秒为单元)和--connections-pool-spawn-rate(每个距离的新毗邻数)界说。如:

redis-cluster-proxy --connections-pool-size 20 connections-pool-min-size 15 --connections-pool-spawn-rate 2 --connections-pool-spawn-every 500 127.0.0.1:7000

说明:确立一个包罗20个毗邻(最大)的毗邻池,并在毗邻数降至15以下时重新填充它,方式是每500毫秒确立2个新毗邻。记着,署理启动时,每个池都将完全填充。 同样主要的是要注重,当拥有专用毗邻的客户端断开毗邻时,若是池自己尚未满,则他们的线程将实验接纳其专用毗邻,以便再次将其添加到池中。

受密码保护的群集和Redis ACL

若是集群节点受密码保护,则可以使用-a,-auth下令行选项或auth设置文件选项,以指定身份验证密码。此外,若是集群使用ACL,而且有多个用户,则可以使用--auth-user下令行选项(或设置文件中的auth-user)向特定用户举行身份验证。如:

redis-cluster-proxy -a MYPASSWORD 127.0.0.1:7000

redis-cluster-proxy --auth MYPASSWORD 127.0.0.1:7000

redis-cluster-proxy --auth-user MYUSER --auth MYPASSWORD 127.0.0.1:7000

proxy将使用这些凭证对集群举行身份验证并获取群集的内部设置,它还将对所有客户端举行身份验证。因此使用--auth-user指定的用户或默认用户(若是未指定用户)对将要毗邻到proxy的所有客户端举行身份验证,而无需自己挪用AUTH下令:在这种情形下,客户端将使用专用毗邻而不是共享的多路复用毗邻。

启用跨槽查询

跨槽查询使用属于差别槽甚至差别节点的多个键。 不能保证执行是原子的(它们实际上可以损坏许多Redis下令的原子设计),因此默认情形下将其禁用。 若是想要此功效,则可以在启动时通过使用--enable-cross-slot或通过在设置文件中设置enable-cross-slot yes来启用它。 您还可以在署理运行时通过使用特殊的PROXY下令激活此功效。

注重:纵然启用了此功效,也不是所有下令都支持跨槽查询(即,不能将其与EVAL或ZUNIONSTORE以及许多其他下令一起使用)。 在这种情形下,将收到特定的错误回复。 可以使用PROXY下令来获取在跨槽查询中无法使用的下令列表

PROXY下令

PROXY下令允许获取特定的信息或执行特定的操作。该下令具有各种子下令,下面是一些清单:

  • PROXY CONFIG GET|SET option [value]
    用于获取或设置Proxy特定选项,其中选项与下令行参数(不带-前缀)中使用的选项相同,或在设置文件中指定。并非所有选项都可以更改(其中某些选项(即线程)是只读的)
    PROXY CONFIG GET threads
    PROXY CONFIG SET log-level debug
    PROXY CONFIG SET enable-cross-slot 1
    PROXY MULTIPLEXING STATUS|OFF
  • PROXY MULTIPLEXING STATUS|OFF
    获取客户端多路复用毗邻模子的状态,或通过禁用多路复用
    -> PROXY MULTIPLEXING STATUS
    -> Reply: "on"
    -> PROXY MULTIPLEXING off
  • PROXY INFO
    返回特定集群的信息,类似于Redis中的INFO下令。

  • PROXY COMMAND [UNSUPPORTED|CROSSSLOTS-UNSUPPORTED]
    返回由Redis Cluster Proxy处置(已知)的所有Redis下令的列表,UNSUPPORTED:不支持的下令;CROSSSLOTS-UNSUPPORTED:不能与跨槽查询一起使用的下令,纵然设置中启用了跨槽查询。
  • PROXY CLIENT
    执行特定客户的操作
    PROXY CLIENT ID: -- 获取当前客户的内部ID
    PROXY CLIENT THREAD: -- 获取当前客户端的线程
  • PROXY CLUSTER [subcmd]
    执行与挪用客户端关联的集群有关的操作。
      PROXY CLUSTER或PROXY CLUSTER INFO获取有关群集的信息。 信息是一个数组,其元素接纳名称/值对的形式,其中名称是特定的功效,例如状态,毗邻等。 也可以检索单个特定功效的信息,即通过挪用署理群集状态。 以下是可以检索的常见信息列表:
    status:集群的当前状态,可以更新,更新或损坏
    connection:毗邻类型,若是客户端在多路复用上下文中(因此毗邻与线程的所有客户端共享),则可以共享;若是客户端使用其自己的专用毗邻,则可以共享。
    nodes:一个嵌套数组,其中包罗集群的所有主节点的列表。 每个节点都是另一个嵌套的数组,其中包罗名称/值对。

      PROXY CLUSTER UPDATE:请求更新当前集群的设置。
    如:

    -> PROXY CLUSTER
    
    1) status
    2) updated
    3) connection
    4) shared
    5) nodes
    6) 1)  1) name
           2) 8d829c8b66f67dd9c4adad16e5c0a4c82aadd810
           3) ip
           4) 127.0.0.1
           5) port
           6) (integer) 7002
           7) slots
           8) (integer) 5462
           9) replicas
          10) (integer) 1
          11) connected
          12) (integer) 1
      ...
  • PROXY LOG [level] MESSAGE
    将MESSAGE纪录到署理的日志中,以举行调试。可选级别可用于界说日志级别:debuginfosuccesswarningerror(默以为debug)

  • PROXY DEBUG

    为调试目的执行差别的操作,其中子下令可以是:SEGFAULT:使用sigsegv使署理溃逃;ASSERT:由于断言失败而使署理溃逃。

  • PROXY SHUTDOWN [ASAP]
    关闭署理。 可选的ASAP选项使署理立刻退出(不安全退出)。

  • PROXY HELP
    PROXY下令的辅助

特殊行为的下令

  1. PING:PONG由Proxy直接回答
  2. MULTI:通过在客户端自己中确立专用毗邻来禁用多路复用。 注重:由于必须是原子的,因此跨槽查询无法在多事务内运行。
  3. DBSIZE:将查询发送到集群中的所有节点并对它们的回答求和,以便效果将是整个集群中的键总数。
  4. SCAN:在群集的所有主节点上执行扫描。 回答中包罗的光标将有一个特殊的四位数字后缀,指示必须扫描的节点的索引。 注重:有时光标可能类似于“ 00001”,因此当客户端必须使用它来执行下一次扫描时,不必将其转换为整数。

当前状态

现在,该项目是alpha代码,旨在由社区评估以获取建媾和孝敬。 不建议在任何生产环境中使用它。

测试说明

设置文件说明

# Redis Cluster Proxy configuration file example.
# 通过设置文件启动方式
# ./redis-cluster-proxy -c /path/to/proxy.conf

################################## INCLUDES ###################################
# include /path/to/local.conf
# include /path/to/other.conf

######################## CLUSTER ENTRY POINT ADDRESS ##########################
#与在redis-cluster-proxy下令行参数中指示的方式相同的方式指示入口点地址,可以被下令行参数自己笼罩。 可以通过添加更多行来指定多个入口点
cluster 192.168.163.134:8379
cluster 192.168.163.134:8380
cluster 192.168.163.134:8381

################################### MAIN ######################################
#设置Redis集群署理端口
port 7777

#绑定地址,通过声明多行绑定来绑定多个接口
bind 192.168.163.134
bind 127.0.0.1

# Unix套接字的路径
unixsocket /usr/local/redis-cluster-proxy/proxy.socket

# 设置Unix套接字权限
unixsocketperm 760

# 设置线程数
threads 8

#TCP活跃毗邻时间,默认300秒
tcpkeepalive 300

#TCP毗邻中已完成行列(完成三次握手之后)的长度
tcp-backlog 511


#毗邻池的巨细,使用0完全禁用毗邻池,每个线程都有其随时可用的毗邻池。 当署理启动时,每个线程将填充一个池,该池包罗与集群所有节点的毗邻。 每当客户端需要专用毗邻时,它都可以从池中确立毗邻(若是有)。 这将加速客户端从线程的共享毗邻到其自己的专用毗邻的转换,由于来自线程池的毗邻应该已经毗邻而且可以使用。 否则,具有优先毗邻的客户端必须重新毗邻群集的节点(这种重新毗邻将以“惰性”方式举行)
connections-pool-size 10

#毗邻池中最小毗邻数。 低于此值,线程将以界说的速率最先重新天生毗邻,直到池再次变满。
connections-pool-min-size 10

#用于重新天生池中毗邻的时间距离(以毫秒为单元),当池中的毗邻数下降到最小值以下(connections-pool-min-size)时,线程将最先重新分配池中的毗邻,直到池再次充满。 新毗邻将按此指定距离添加。
connections-pool-spawn-every 50

#在每个周期中重新天生的毗邻数,每个周期的距离由connections-pool-spawn-every界说
connections-pool-spawn-rate 50

# 后台运行
daemonize yes

#pid文件路径
pidfile /usr/local/redis-cluster-proxy/redis-cluster-proxy.pid

#指定日志文件名,空字符串还可用于强制Redis Cluster Porxy登录尺度输出。 若是使用尺度输出举行日志纪录但举行守护历程,则日志将发送到/dev/null
logfile /usr/local/redis-cluster-proxy/proxy.log

# 启用使用差别插槽甚至差别节点的多个键的跨插槽查询。 忠告:这些查询将损坏许多Redis下令的原子性设计。 注重:纵然启用了此功效,也不是所有下令都支持跨槽查询
enable-cross-slot yes

# 最大客户端毗邻数
maxclients 10000

#若是集群的节点受密码保护,则用于在集群上举行认证的认证密码, 还用于获取集群的设置以及自动验证署理与集群自己的内部毗邻。
auth dba

# 用户认证,支持Redis 6.0 ACL
auth-user dba

################################# LOGGING #####################################

# 日志品级: debug, info, success, warning o error.
log-level error

# 转储从客户端收到的查询到日志中(log-level debug)
# dump-queries no

# 转储缓冲区到日志中(log-level debug)
# dump-buffer no

# 转储请求的行列到日志中(log-level debug)
# dump-queues no

测试说明

条件:

Host:192.168.163.134
Port:837983808381
# ACL
User:dba
Pwd:dba

启动:

redis-cluster-proxy -c /usr/local/redis-cluster-proxy/proxy.conf 

上岸:

redis-cli -h 127.0.0.1 -p 7777
127.0.0.1:7777>  

治理:

> proxy help
 1) PROXY <subcommand> arg arg ... arg
 2) INFO   [section]           -- 查看Proxy信息
 3) CONFIG GET <param>         -- 查看Proxy参数
 4) CONFIG SET <param> <value> -- 设置Proxy参数
 5) MULTIPLEXING STATUS|OFF    -- 获取当前客户端的多路复用状态或将其关闭
 6) COMMAND [type]             -- 当前已知的列表下令可用于过滤(unsupported|crosslots-unsupported)
 7) CLIENT <subcmd>            -- 执行特定于客户的操作(有关详细信息,请键入“PROXY CLIENT HELP”: PROXY CLIENT ID(获取当前客户端id),PROXY CLIENT THREAD(获取当前线程))
 8) CLUSTER [subcmd]           -- 执行特定于群集的操作(有关详细信息,请键入“PROXY CLUSTER HELP”:INFO、STATUS、CONNECTION、NODES、UPDATE)
 9) DEBUG <subcmd>             -- 用于调试署理的实用程序(更多信息,请键入“PROXY DEBUG HELP”)
10) SHUTDOWN [ASAP]            -- 关闭署理。 若是使用`ASAP`,请立刻执行(不安全退出),否则发送SIGINT。
11) LOG [level] <message>      --新闻纪录到日志中,以举行调试

> PROXY CLIENT HELP
1) PROXY CLIENT <subcommand> [arg arg ... arg]
2) ID     -- 获取客户端内部ID
3) THREAD -- 获取当前客户端的线程ID

> PROXY CLUSTER HELP
1) PROXY CLUSTER [subcommand]
2) -,INFO     -- 获取与挪用客户端关联的集群的信息
3) STATUS     -- 获取与呼叫客户端关联的群集的状态。 状态可以是:更新(updated)|更新(updating)|中止(broken)
4) CONNECTION -- 获取与挪用客户端关联的群集的毗邻类型。 类型可以是:公有(shared)|私有(private)
5) NODES      -- 获取与挪用客户端关联的群集的主节点列表。 类型可以是:公有(shared)|私有(private)
6) UPDATE     -- 请求更新与当前客户端关联的群集的设置。

> PROXY DEBUG HELP
1) PROXY DEBUG <subcommand> [ARGS...]
2) SEGFAULT            -- Cause a SEGFAULT on the proxy
3) ASSERT              -- Cause an assertion failure  on the proxy
4) KILL <thread> [sig] -- Send signal to thread (can be MAIN,SELF or the thread ID). Signal can be TERM,INT,KILL or a signal number.

测试:

①:治理下令测试

-- 设置参数
> proxy config get connections-pool-size
1) connections-pool-size
2) (integer) 10
> proxy config get enable-cross-slot
1) enable-cross-slot
2) (integer) 0
> proxy config set enable-cross-slot 1
OK
> proxy config set connections-pool-size 5
OK


-- 查看Proxy信息
> proxy info
# Proxy
proxy_version:999.999.999
proxy_git_sha1:ac83840d
proxy_git_dirty:0
proxy_git_branch:unstable
os:Linux 4.15.0-99-generic x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:7.5.0
process_id:64512
threads:8
tcp_port:7777
uptime_in_seconds:1262
uptime_in_days:0
config_file:/usr/local/redis-cluster-proxy/proxy.conf
acl_user:dba
unix_socket:/usr/local/redis-cluster-proxy/proxy.socket
unix_socket_permissions:760

# Memory
used_memory:6736984
used_memory_human:6.42M
total_system_memory:2065895424
total_system_memory_human:1.92G

# Clients
connected_clients:1
max_clients:10000
thread_0_clinets:1
thread_1_clinets:0
thread_2_clinets:0
thread_3_clinets:0
thread_4_clinets:0
thread_5_clinets:0
thread_6_clinets:0
thread_7_clinets:0

# Cluster
address:192.168.163.134:8379
entry_node:192.168.163.134:8379


-- 查看集群信息
> proxy cluster info
1) status
2) updated
3) connection
4) shared
5) nodes
6) 1)  1) name
       2) 91463f2fbb73cbbda4203fe88de465cafa0423fb
       3) ip
       4) 192.168.163.134
       5) port
       6) (integer) 8380
       7) slots
       8) (integer) 5462
       9) replicas
      10) (integer) 0
      11) connected
      12) (integer) 1
   2)  1) name
       2) afec09788ceeacad2b9c4d5cd92aa986e161d93e
       3) ip
       4) 192.168.163.134
       5) port
       6) (integer) 8379
       7) slots
       8) (integer) 5461
       9) replicas
      10) (integer) 1
      11) connected
      12) (integer) 1
   3)  1) name
       2) ff7a6f8ba650540cee8355f8042854b4131d49da
       3) ip
       4) 192.168.163.134
       5) port
       6) (integer) 8381
       7) slots
       8) (integer) 5461
       9) replicas
      10) (integer) 0
      11) connected
      12) (integer) 1
View Code

②:应用下令测试

allbet登录官网:Redis 6.0 redis-cluster-proxy 说明,Redis Cluster 原理相关说明,redis-cli --cluster help说明 第1张
127.0.0.1:7777> get a
"a"
127.0.0.1:7777> 
127.0.0.1:7777> get b
"b"
127.0.0.1:7777> get c
"c"
127.0.0.1:7777> get d
"d"
127.0.0.1:7777> mget a b c d
(error) ERR Cross-slot queries are disabled. They can be enabled by using the --enable-cross-slot option, or by calling `PROXY CONFIG SET enable-cross-slot 1`. WARN: cross-slot queries can break the atomicity of the query itself.
127.0.0.1:7777> PROXY CONFIG SET enable-cross-slot 1
OK
127.0.0.1:7777> mget a b c d
1) "a"
2) "b"
3) "c"
4) "d"
127.0.0.1:7777> mset a abc b cbd c cba d dba
OK
127.0.0.1:7777> dbsize  --支持所有节点key的汇总统计
(integer) 18
127.0.0.1:7777> SDIFF a b
(error) ERR Cross-slot queries are not supported for this command
127.0.0.1:7777> SINTER a b
(error) ERR Cross-slot queries are not supported for this command
127.0.0.1:7777> SMOVE a b
(error) ERR Cross-slot queries are not supported for this command
127.0.0.1:7777> SUNION a b
(error) ERR Cross-slot queries are not supported for this command
127.0.0.1:7777> hmget hd
(error) ERR wrong number of arguments for 'hmget' command
127.0.0.1:7777> rename a aaaaa
(error) ERR Cross-slot queries are not supported for this command
View Code

说明:通过测试发现,redis-cluster-proxy可以使用mset、mget、dbsize等跨节点和slot的操作,另有一些操作都不支持。

③:更多测试

现在没有使用redis-cluster-proxy,等需要的时刻再做测试。若是正计划用的同砚需要做更多的功效和性能测试。

④:更多的问题

好比若何制止Proxy的单点,Proxy的设置优化等等。

总结

现在Redis之父在自己博客里声明:退出开源项目维护,将 Redis 交给 Redis 社区。个人感觉后面Redis 社区会稳固和逐步完善自己的Proxy。拭目以待吧!

参考文档

https://github.com/RedisLabs/redis-cluster-proxy

 

,

欧博亚洲客户端

欢迎进入欧博亚洲客户端(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。

网友评论

  • (*)

最新评论

文章归档

站点信息

  • 文章总数:453
  • 页面总数:0
  • 分类总数:8
  • 标签总数:815
  • 评论总数:116
  • 浏览总数:3896