twemproxy在redis上能处理多命令流程只有mset,mget,del的命令,例如mset的话是mset k1 v1 k2 v2 k3 k3,mget的话是mget k1 k2 k3,del的话是del k1 k2 k3。twemproxy在memcache上能处理多命令流程只有get\gets命令,例如get的话是get k1 k2 k3

但是由于twemproxy是redis或memcahe协议的代理,在后端有多台redis或memcache,为此,所有的key/value对会分散在多台redis或memcahe上。在将多个key/value对加入到redis或memcache集群中,twemproxy需要将多个对应的key/value对分别通过将key计算后的hash值路由到对应的后端redis或memcache。而要在redis或memcache集群中查询对应的key/value时,twemproxy需要将对应的key/value对通过将key计算后的hash值从对应的后端redis或memcache收集过来拼接起来返回给用户。

如下图现在有两个后端redis或memcache,key1,key3在后端0上,key2在后端1上,twemproxy通过将收到的请求frag_owner进行分片分片成下面的两个分片将key1,key3发往后端0,key2发往后端1,分片的指针指向frag_owner。

key1  => backend 0
key2 => backend 1
key3 => backend 0
 it will fragment like this:

   +-----------------+
| msg vector |
|(original msg) |
|key1, key2, key3 |
+-----------------+ frag_owner
/--------------------------------------+
frag_owner / |
/-----------+ | /------------+ frag_owner |
| | | | | |
| v v v | |
+--------------------+ +---------------------+ +----+----------------+
| frag_id = 10 | | frag_id = 10 | | frag_id = 10 |
| nfrag = 3 | | nfrag = 0 | | nfrag = 0 |
| frag_seq = x x x | | key1, key3 | | key2 |
+------------|-|-|---+ +---------------------+ +---------------------+
| | | ^ ^ ^
| \ \ | | |
| \ ----------+ | |
+---\---------------+ |
------------------------------------------+
例如请求是mget key1 key2 key3,twemproxy会将命令切割成mget key1 key3mget key2,分别发往后端0,后端1。
同样的在,收到这些命令回复后,通过分片和请求之间的关系将其进行拼接后放回给用户。

最新文章

  1. 5.JAVA之GUI编程窗体事件
  2. TextView+Fragment实现底部导航栏
  3. CentOS7安装MySQL、Redis、RabbitMQ
  4. 总结运行SSIS包的几种方式
  5. 判断Sql Server2008中ntext不为空
  6. IIS 301 重定向 带参数链接
  7. 请问如何查看mysql 的端口号?
  8. 在内核中异步请求设备固件firmware的测试代码
  9. springday02-go2
  10. 表单美化-原生javascript和jQuery下拉列表(兼容IE6)
  11. HDU 1003 Max Sum --- 经典DP
  12. mysql_DML_update
  13. 10 Powerful Apache Modules--reference
  14. wpf将表中数据显示到datagrid示例(转)
  15. HDU 1160 FatMouse's Speed 动态规划 记录路径的最长上升子序列变形
  16. 【POJ】1067 取石子游戏(博弈论)
  17. 关于ruby -gem无法切换淘宝源
  18. [WinForm]C# .net防止一个程序(WinForm)重复运行的方法。
  19. TS学习随笔(五)->函数
  20. Sony索尼数码录音笔MSV格式转换为MP3格式【转】

热门文章

  1. vscode markdown-all-in-one 源码编译成vsix
  2. windows+python3+opencv3.4安装
  3. JSP中文件的上传于下载演示样例
  4. client、server端编程
  5. js实现操作等待提示loading……
  6. 深度理解IIS下部署ASP.NET Core2.1 Web应用拓扑图
  7. 【Samza系列】实时计算Samza中文教程(四)—API概述
  8. Hook技术简介(有用SDK写的例子)
  9. PatentTips - Fast awake from low power mode
  10. 【u030】扑克牌