人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新)
1.执行命令:
cd /home/data/redis/bin
redis-cli -p 2311 -c
127.0.0.1:2311> get ng
报错:(error) CLUSTERDOWN Hash slot not served
(错误)clusterdown哈希槽未提供
执行命令:cd /home/data/redis/bin
redis-cli --cluster check IP:2311 或 redis-trib.rb check 127.0.0.1:2311
报错:[ERR] Not all 16384 slots are covered by nodes.
[错误]并非所有16384插槽都由节点覆盖
2.解决:
1.在修复之前,先使用redis-server命令启动所有的redis实例
2.如果是使用redis-cli来搭建Redis集群的话,请使用如下修复命令。
/home/data/redis/bin/redis-cli --cluster fix 127.0.0.1:2311
/home/data/redis/bin/redis-cli --cluster fix 127.0.0.1:2312
3.如果是使用redis-trib.rb来搭建Redis集群的话,请使用如下修复命令
/home/redis-5.0.4/src/redis-trib.rb fix 127.0.0.1:2311
/home/redis-5.0.4/src/redis-trib.rb fix 127.0.0.1:2312
4.注意:redis 5.0以上的版本,通过 redis-cli 进行搭建Redis集群。
redis 5.0以下的版本,通过 redis-trib.rb 进行搭建Redis集群。
5.执行redis-trib.rb命令可能出现的问题:
命令:/home/redis-5.0.4/src/redis-trib.rb fix IP:端口号
打印如下信息
WARNING: redis-trib.rb is not longer available!
You should use redis-cli instead.
All commands and features belonging to redis-trib.rb have been moved
to redis-cli.
In order to use them you should call redis-cli with the --cluster
option followed by the subcommand name, arguments and options.
Use the following syntax:
redis-cli --cluster SUBCOMMAND [ARGUMENTS] [OPTIONS]
Example:
redis-cli --cluster fix
To get help about all subcommands, type:
redis-cli --cluster help
意思是:redis-trib.rb不再可用,因为redis-trib.rb命令的功能已经移动到redis cli命令中。
请使用 redis-cli --cluster 子命令[参数][选项]。
例子:redis-cli --cluster fix IP:端口号
原因:redis 5.0以上的版本,通过 redis-cli 进行搭建Redis集群。
redis 5.0以下的版本,通过 redis-trib.rb 进行搭建Redis集群
Sorry, the cluster configuration file nodes.conf is already used by a different Redis Cluster node.
Please make sure that different nodes use different cluster configuration files.
1.原因:如果在同一台机器上启动两个redis实例的话,因为当启动每一个redis实例的时候,都会自动生成一个nodes.conf文件,
想要解决上面报错,要保证以下两点的其中一点:
1.要么保证每个redis实例对应的 redis.conf(redis-端口号.conf)配置信息如下:cluster-config-file nodes-端口号.conf
2.如果没有配置cluster-config-file信息,要么redis实例启动的时候默认自动生成的文件名都统一为nodes.conf,
因此在同一台机器上有多个redis实例要启动的话,要么必须保证redis实例的文件都在单独一个的文件夹中,
要么启动每个redis实例的时候在不同的路径下执行启动命令,因为执行启动命令默认是在当前路径下自动生成nodes.conf的,
所以只要保证每次启动redis实例都在不同的路径下自动生成nodes.conf,那么便不会发生覆盖nodes.conf的问题。
2.解决方式1:
本教程建议您为每个实例配置使用单独的文件夹,因此每个实例也会在其自己的文件夹上生成nodes.conf。
在每个目录中创建一个redis.conf文件,从7000到7005。每个端口名称的文件夹就是相当于一个redis实例。
/tmp/redis-cluster/7000
/tmp/redis-cluster/7001
/tmp/redis-cluster/7002
/tmp/redis-cluster/7003
/tmp/redis-cluster/7004
/tmp/redis-cluster/7005
您需要在每个实例的单独文件夹(每个端口名称的文件夹)中放置redis.conf文件,并且必须从该文件夹中运行可执行文件。
假设要执行的redis-server文件在/tmp/redis-cluster/目录下,并且每个/tmp/redis-cluster/700x文件夹上都有redis.conf
执行命令流程如下:
cd /tmp/redis-cluster/7000
../redis-server ./redis.conf
这样,nodes.conf将在当前/tmp/redis-cluster/7000文件夹下上生成,实际即是nodes.conf将在当前文件夹下(每个端口名称的文件夹中)上生成。
3.解决方式2:
在redis.conf(redis-2311.conf)的配置文件中修改如下配置:cluster-config-file nodes-2311.conf
在redis.conf(redis-2312.conf)的配置文件中修改如下配置:cluster-config-file nodes-2312.conf
1.问题:如果进入1机的redis可以拿到数据,但是进入2机的redis却拿不到同样key的数据的话,或者从别的端口进入redis拿不到数据的话,
应重新搭建redis集群,只需要执行一条搭建redis命令即可。
2.原因分析:每台主机之间的主redis/备redis实例之间失去了联系,所以每个redis实例之间不再是集群关系,所以需要重新搭建redis集群,
只需要执行一条搭建redis命令即可。
2.解决:执行搭建redis命令
/home/data/redis/bin/redis-cli --cluster create IP1:2311 IP1:2312 IP2:2311 IP2:2312 IP3:2311 IP3:2312 --cluster-replicas 1
“--replicas 1”命令中的“1”:表示每个“主”Redis节点服务器后面都有1个“从”Redis节点服务器。
1.执行命令:/home/data/redis/bin/redis-cli --cluster create IP1:2311 IP1:2312 IP2:2311 IP2:2312 IP3:2311 IP3:2312 --cluster-replicas 1
2.报错:Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0
3.解决:
1.删除各节点下的 dump.rdb 和 appendonly.aof
2.删除各节点下的 redis.conf(redis-端口号.conf)所配置的 cluster-config-file 对应的 nodes.conf(nodes-端口号.conf)文件
3.进入各节点下的 redis-cli -p 2311 -c、redis-cli -p 2312 -c 执行 “flushdb 数据库名” 或者 “flushall” 清空所有数据库
可用过获取所有key(keys *),查看是否所有key被清除完毕。
如果执行“flushdb 数据库名” 或者 “flushall” 清空所有数据库时,报错(error) READONLY You can't write against a read only replica,
表示当前进入的端口的数据库是备机,所以显示只读。
4.各节点下重启redis
/home/data/redis/bin/redis-server /home/data/redis/redis-2311.conf
/home/data/redis/bin/redis-server /home/data/redis/redis-2312.conf
ps aux|grep redis
./
redis
-trib.rb create --replicas 1 192.168.179.128:7001 192.168.179.128:7002 192.168.179.128:7003 192.168.179.128:7004 192.168.179.128:7005 192.168.179.128:7006
由于手贱未正常操作,导致在后面查看集群...
百度上坑太多,如果你遇到搭建
redis
集群的时候出现这个错误在百度上找到解决办法基本上都是坑。
首先集群搭建完成后,你肯定去登陆
redis
进行测试
1.
redis
01/
redis
-cli -h "xxx.xxx.xxx.xxx" -p 8001 -c
登陆进去测试
xxx.xxx.xxx.xxx>set test aaa
报错
(error)
CLUST
ERD
OWN
Hash
slo...
docker安装
redis
docker pull
redis
docker run -itd --name
redis
-p 6379:6379 -v /home/admin/
redis
/
redis
.conf:/etc/
redis
/
redis
.conf -v /home/admin/
redis
/data:/data
redis
redis
-server /etc/
redis
/
redis
.conf
docker安装完
redis
后内部是没有配置文件的,需要在创建之前指定
下面命令是让
redis
加载所给的配置
根据你提供的引用内容,你遇到的问题是"Error in execution; nested exception is io.lettuce.core.
Redis
CommandExecutionException:
CLUST
ERD
OWN
Hash
slot
not
served
"。这个错误通常与
Redis
集群的配置有关。你可以通过检查
redis
.conf文件中的配置来解决这个问题。
首先,你需要进入
redis
.conf文件,可以使用vim命令打开该文件:
```shell
vim
redis
.conf
然后,你可以使用/
clust
er-enabled命令在文件中查找"
clust
er-enabled"配置项。按下字母n可以查找下一个匹配项。当找到该配置项后,检查它的值是否为"yes"。如果是"yes",则将其改为"no",以关闭集群模式。保存文件并重新启动
Redis
服务。
这样做后,你的
Redis
集群将被关闭,不再分配
Hash
槽,从而解决了"
CLUST
ERD
OWN
Hash
slot
not
served
"的问题。