当前位置: 首页 > news >正文

焦作市网站建设科技软文营销什么意思

焦作市网站建设科技,软文营销什么意思,网站首页建设网,小网站开发框架MOVED转向 1 ) 问题描述 在客户端操作Redis集群的时候 MOVED转向 或 MOVED错误是经常遇到的一类问题我们先连入集群:$ /usr/local/redis/bin/redis-cli -a 123456 -h 192.168.10.101 -p 6371之前在Redis中存储过一些数据,比如下面的情况,当输…

MOVED转向


1 ) 问题描述

  • 在客户端操作Redis集群的时候 MOVED转向 或 MOVED错误是经常遇到的一类问题
  • 我们先连入集群:$ /usr/local/redis/bin/redis-cli -a 123456 -h 192.168.10.101 -p 6371
  • 之前在Redis中存储过一些数据,比如下面的情况,当输入 $ get username, 会有
    (error) MOVED 14315 192.168.10.103:6375
    
    • 它提示 usrename 这个key的槽在 14315,槽在 103:6375节点
    • 这里它已经提示你key在哪里,但就是不给你
    • 这个涉及到 Redis 的一个官方规范

2 )Redis 规范

  • 这个规范是:
    • 一个 Redis 的客户端, 它向集群中的任意节点发送命令请求
    • 请求节点会对命令请求进行分析,如果该命令是集群可以执行的命令
    • 之后,对这个key做crc16的运算,对16384取余,最后得到一个值
    • 它会对这个key所在的槽进行查找,如果槽在当前节点,则可以顺利执行
    • 否则当前节点会给你返回一个 MOVED 错误
    • 这个 MOVED 错误会告诉你槽和对应的节点在哪里

3 )解决方案


3.1 解决方案 1

  • 让你的这个客户端使用集群的方式来连接就行了
  • $ /usr/local/redis/bin/redis-cli -c -a 123456 -h 192.168.10.101 -p 6371
    • 看到这里多了一个 -c
    • 它会帮助我们做 MOVED 转向
  • 这里使用的是 redis-cli, 另外,你的第三方的客户端, 比如一些可视化的客户端
  • 包括项目里的代码,也要以集群 cluster 的方式接入

3.2 解决方案 2

  • 如果你的客户端不支持集群
  • 但是在你连接你每次获取请求的时候,实际上会拿到这个槽和这个节点的信息
  • 把记录下来之后,再次有这个命令的时候,就可以寻找到正确的那个节点去执行命令
  • 最终集群处于一个稳定状态了,所有的客户端都会保存一个完整的哈希槽对应一个节点的映射记录,集群呢就非常高效了
  • 然后有命令过来,客户端就可以直接向正确的这个节点发送命令请求就无需转向等等的这些操作了
  • MOVED 转向是 Redis 官方规范要求,就是客户端必须要处理MOVED的错误
    • 要么就是以集群的方式连接, 交给那种第三方的东西帮你去做
    • 要么就是你自己去处理
  • 因为我们要实现对用户的一种透明
  • 总结下来
    • 就是保持 server 端,尽量简洁
    • 能不在server端做的事情就不在server端做
    • 降低 server端 的压力

ASK转向


1 ) 问题描述

  • 除了上面 MOVED 转向 和 Redis 的规范,还要求客户端必须也要实现对 ASK 转向的处理
  • 在进行节点与插槽管理的时候,比如添加一个主节点
    • 需要把其他节点的槽重新分配给了这个新的主节点
    • 在这个过程中,移动了很多的槽,槽在做迁移
    • 包括在删除主节点的时候,也是先把那些槽转移到可用的节点上
    • 就是先迁移过去,然后再删它
  • 就在上面这个过程中,如果你发了一个命令,你这个命令要处理的那个键
  • 恰好就属于正在被迁移的这个槽,这时候就会产生 ASK 转向
  • 原节点会在自己的数据里面去找你指定的这个键
  • 如果找到了,那就直接执行客户端发送的命令就返回了
  • 没找到,这个键有可能已经被迁移到目标的节点了, 原节点就会向客户端返回一个ASK错误
  • 指引客户端向正在导入槽的目标节点,再次发送之前要执行的命令
  • 在环境稳定的情况下,是不可能产生ask错误的
    • 因为 ASK 错误,是你的集群中有槽在迁移
    • 而且你请求的那个key 正好就是在迁移的那些槽中才会发生这个错误

2 ) 解决方案


2.1 解决方案1

  • 让你的客户端都使用集群的方式连接,它内部会帮你去做

2.2 解决方案2

  • 以正常的方式去登录,登录之后呢,它这个里边有一个 ASKING 的一个命令
  • 这个 ASKING 的命令是干嘛的呢?
    • 就是打开发送该命令客户端的一个Redis ASK 标识
    • 假设,现在有一些槽正在迁移,我请求的key就在迁移的那些槽中
    • 这个时候 Redis 会给我返回一个error,ask 告诉怎么做
    • 这时候,再敲一下 ASKING 看到这个OK之后
    • 再去获取,就能拿到了这个 key
  • 它的原理就是 ASKING 命令打开 Redis ASKING 的一个标识
  • 当你拿完以后,这个 ASKING 的标识也会被移除,它是一次性的
    • 也就是说你的这个槽在迁移的过程中,如果想要多次获取它
    • 每次获取都得通过 ASKING 获取

ASK 错误和 MOVED 错误的区别

1 ) 关于 MOVED 转向

  • MOVED 错误,它代表的这个槽的负责权已经从一个节点转到另一个节点了
  • 而且就是当节点需要让一个客户端长期的针对某个槽的命令请求发送至另一个节点
  • 节点就会向客户端返回 MOVED 转向
  • 使用了集群的方式登录客户端,这个问题就解决了

2 )关于 ASK 转向

  • ASK 转向只是两个节点在迁移过程中,就是槽迁移过程中使用的一种临时措施
  • 就是当节点需要让客户端仅仅只是在下一次命令请求转向另一个节点
  • 节点向客户户会返回 ASK 的一个转向, 要先发送一个 ASKING 的命令,才能够去请求
  • 否则的话会执行失败

3 )简单理解

  • MOVED 转向相当于告诉你这个槽在哪,你要自己去获取, 解决办法是以集群的方式连入,或者说自己去维护槽对应节点信息, 在每次命令之前自己去做处理判断,让他向正确的节点发送请求

  • ASK 转向是槽迁移的过程中产生的一种错误,它会给你返回 ASK error

  • 解决办法,也是你的客户端以集群的方式接入,它会自己帮你去处理

  • 否则的话,先发送一个 ASKING,然后再去获取,就能正常拿到

http://www.hrbkazy.com/news/4430.html

相关文章:

  • 美工网站销售外包公司
  • 万创网做的网站怎么样网站排名优化培训电话
  • 帮人做钓鱼网站以及维护线上推广的优势和好处
  • 如何给网站加二级域名网络营销的方法有哪些?举例说明
  • 宿迁做网站公司自助建站工具
  • 网站开发质保旅游产品推广有哪些渠道
  • 苏州在线网站制作培训网站搭建
  • 企业风首页中文官网模板临沂seo排名外包
  • 建筑行业一般在哪个网站招聘谷歌seo靠谱吗
  • 汶上网站建设哪家便宜高佣金app软件推广平台
  • 网站建设与管理课程项目seo网站优化流程
  • 开店装修话做那个网站找工人苏州seo优化
  • 编程培训学校网站优化最为重要的内容是
  • 推广网站链接怎么做中央人民政府网
  • 微网站开发技术架构兰州网络推广新手
  • 可以做翻译的网站百度推广新手入门
  • 免费建站网站一区黄在线国产惠州短视频seo
  • 网站自动识别手机网络竞价
  • 企业网站功能怎么设计百度搜索推广流程
  • 重庆承越网站建设地址英雄联盟最新赛事
  • 怎么做打赏看视频的网站seo查询
  • 小男孩做爰网站seo优化排名怎么做
  • 网络培训心得体会教师qq群排名优化
  • 益阳市住房和城乡建设局网站杭州网站seo优化
  • 邯郸网站建设多少钱河南推广网站
  • 网站做图尺寸互联网销售是做什么的
  • 武夷山网站建设百度代理公司怎么样
  • 网站链接结构有哪些互联网推广工作好做吗
  • 宿迁市住房和城乡建设局网站长沙好的seo外包公司
  • 广州专业做网站建设免费网站流量