回到目录

Twenproxy除了可以作为redis的代理,它同样支持memerycached。我这里主要了解Twemproxy在redis集群上的解决方案。Twemproxy除了完美的解决了分片,路由等功能(同样采用了一致性hash算法) Twenproxy实现redis集群高可用 它支持node ejection,如果使用redis当缓存,不是很注重数据的一致性的话,开启node ejection可以在集群中某一台redis挂掉的时候将其送集群列表中移除,达到高可用性。

如果redis集群做为数据存储的话,或者很注重数据的一致性,则可以禁用node jection,但此时需要使用redis sentiel实现高可用性。

TW结构图

aaarticlea/png;base64,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" alt="" />

安装TW的方法

安装

$ git clone git@github.com:twitter/twemproxy.git
$ cd twemproxy
$ autoreconf -fvi
$ ./configure --enable-debug=log
$ make

修改配置

# cd /usr/local/src/nutcracker-0.3./conf
# cp nutcracker.yml /etc/
# vim /etc/nutcracker.yml
alpha:
listen: 192.168.128.128:
hash: fnv1a_64
distribution: ketama
auto_eject_hosts: true
redis: true
server_retry_timeout:
server_failure_limit:
servers: --两台redis服务器的地址和端口
- 192.168.2.1::
- 192.168.2.2::

测试一下它的配置文件 conf是否有问题

# nutcracker -t /etc/nutcracker.yml 

然后启动服务

# nutcracker -d -c /etc/nutcracker.yml

查看它的进程是否已经存在

ps -ef|grep nutcracker

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAl8AAAAgCAIAAACjNop3AAAFm0lEQVR4nO2dXZKcLBSGWRbrcSVzzX3W4UamKlUu4Mtkfrp7TJyeJOX1fBe2AnpAsEFU3qe46Ioi56DhEbR72NfX1+PjY2tAcMYYK0rTdgB0yoItvWTEN8YeGHtgxffwcS3ne9FFxR64eParutGMAMXry6taPpomdUQgMcxuRwAAODYjLw527Erq6EAyYEcAQL6QalTtCEFmC+wIAMgUkxpHdoQg8wR2BADkiEWNUztCkBkCOwKwBj+fX0zl+acsqcPMBbsaSTtCkLkBO9r4z0rq6MAOsEiRtOOopA7/sMCOYBbYUfLj6cmuQ9gReOGiRrsdockYzKrRZEcIMisysuOPp6fZAjuCUDiq0dGOEGRAYEfgwl7t+PFxdSwuUoQdQVjc1ehuRwgyFLAjcMHPjm+vL+7l4/rpXryCdlfjgezY/QjN8p8tuv2IjcMRqD37f2NcVPNtVYKPGnJvfdd0aTZNE8mOdkGSnbzbni+LaFGnt2NZhE8txjGDEfFsOjfvHQFhx8vlbCqwYyo7Cs6KshV84fV17anfa/fy9nayFHNrZcGFGmrVRX/bMmPX7scLHTW8KYY0o9rxfL7YW1c72avnPfJcZ5iL1lByOwo+dzb8c58/ZqCGFrJaQ2Z8I9DsaPEi7Jh67ti2/mf3OiGgHYcyiqn7X6CGqnwuCy4sAZdFb8WyYNY9N0iXZtM0K9ixEnx0J0x2smPPV4Izxrl+XyLv9rsb7676sIgwvheXqwtFUYhKqVZqv9Zc9bc/+vmdVpfj6W0bF1p1ef9EN2QhtB2p4C3okzwiI49OJo6Zy9mcJsK5zKfo6mt3DAvtOOtF2HF3dpyqMZIdtXlkJTgXo1BNn63MeHSDbMaO8rN7z5cFG2aZw3FpuVKTgGGO2laCK0NSWfQj1DB5Lcthx2E/unrfUCWUEVYNQ7lCiIasBPxGhyl3E1qApox8Onl8zGzOprrx9rlfLbk1rFdfYkdHNcKOO7IjqcZ4dhwEOVyN99lR/u/eEavZkVxcvduOys27feo5HU/Ni2bTwU2ZLvQDp6l6JXg3A+ibVuvqEw43Jyr1l9mRT1v3XTDU9zdm5NPJ001ZnE21rcmHYaJ6rx1///7lWE4+eDnMJ2bj0E9yPp09yvniXrxiDoLj2f1jpvHhdL54lLdTK58aaost7iur/f77U2Pbp/l5vX5er+/vtXtxvju9XM6Xuq7ruja13rbtgpXVdrXxtFLO7bDNMp6O1tbMo+aC56q/rPz793dU6KN42nEcpynu+6SVz9nspqyyzbB2dFcj7LgLO1rUGNuOJ2WJVX8rR66lODyW2StdcuvYcbqySnaye88bxtNhJUB5sCQXweQUX30lRD48JsdTudAnd6OrdztrT6CN72Uue+vI3Y6Wg5hyJ9DXD/saVEbunUwc85hnc3rN97uKqexhx4zsqC9C2M7xBuzYP5NXL9nJ4omJavowfS9UgjOWyo50J7v1fL9XN3opl5g8k0J9I5/4fo+6TDascVGrZrIuV1KYVh/eIxm9jK+9SHJ7kEU25IiLHWcOQQRPQ9tgmtGooyydTB3zqGeTtqMm5uGNn+p2B3BrdvT2kes1Ajvuw46O2NW45twxZ5KsrILF2O0YrBlqkrfFY+6NeN8UgR1hx5B2hCDb+HZMnd8xmdoxdUTAjjIjjONH2BF2hB3DAzsCsHdgR9gRdowC7AjAroEdYUfYMRYx7Jg6JwByAXaEHUPaMXUHbI6wdkydDQAZATseyo7tJr7RAQjut2PqDADIC9gRdoQdEwM1ArBB8EtyM3aM1O9RSWXH1HkfBEgRgC0AO47tGKmjV2Z9O6bOGAAAQiL/vmMOdozThxtlTTumzhUAAAKj/fXj3dkxQoccinXsmDpLAAAIj2bHjr9mUkUJAAAArAlhRwAAACBz/gelN+P0NNGO/wAAAABJRU5ErkJggg==" alt="" />

测试可以使用redis-cli这个工具去连接22122端口完成。

以后在进行redis连接时,就直接填写tw的地址和端口就行了。

回到目录

Redis学习笔记~Twenproxy所起到的作用的更多相关文章

  1. Redis学习笔记~目录

    回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...

  2. Redis学习笔记7--Redis管道(pipeline)

    redis是一个cs模式的tcp server,使用和http类似的请求响应协议.一个client可以通过一个socket连接发起多个请求命令.每个请求命令发出后client通常会阻塞并等待redis ...

  3. Redis学习笔记一:数据结构与对象

    1. String(SDS) Redis使用自定义的一种字符串结构SDS来作为字符串的表示. 127.0.0.1:6379> set name liushijie OK 在如上操作中,name( ...

  4. Redis学习笔记(三)Redis支持的5种数据类型的总结

    继续Redis学习笔记(二)来说说剩余的三种数据类型. 三.列表类型(List) 1.介绍 列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的一段片段.列表类型内部是 ...

  5. Redis学习笔记(二)Redis支持的5种数据类型的总结之String和Hash

    引言 在Redis学习笔记(一)中我们已经会安装并且简单使用Redis了,接下来我们一起来学习下Redis支持的5大数据类型. 简介 Redis是REmote DIctionary Server(远程 ...

  6. Redis学习笔记(1)——Redis简介

    一.Redis是什么? Remote Dictionary Server(Redis) 是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value ...

  7. redis学习笔记(详细)——高级篇

    redis学习笔记(详细)--初级篇 redis学习笔记(详细)--高级篇 redis配置文件介绍 linux环境下配置大于编程 redis 的配置文件位于 Redis 安装目录下,文件名为 redi ...

  8. redis 学习笔记(6)-cluster集群搭建

    上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...

  9. Redis学习笔记4-Redis配置详解

    在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server   xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redi ...

随机推荐

  1. Java单元测试初体验(JUnit4)

    什么是单元测试 我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能很强大,但我们在程序中只用到该函数的一小部分功能,并且经过调试可以确定,这一小部分功能是正确的.但是,我们同时应 ...

  2. 1.2 lambda 表达式的语法

    1.2 lambda 表达式的语法 还以上一节中的排序为例.我们传递代码来检查某个字符串的长度是否小于另一个字符串的长度,如下所示: Integer.compare(first.length(), s ...

  3. 删除外部dwg中指定的块定义

    本例实现删除外部图纸中指定的块定义,在外部图纸当前模型空间中是没有该块定义的块参照存在. 代码如下: void CBlockUtil::DeleteBlockDefFormOtherDwg(const ...

  4. 【NOI赛前训练】——专项测试1·网络流

    T1: 题目大意: 传送门 给一个长度为$n(n<=200)$的数列$h$,再给$m$个可以无限使用的操作,第$i$个操作为给长度为花费$c_i$的价值给长度为$l_i$的数列子序列+1或-1, ...

  5. BZOJ_3879_SvT_后缀数组+单调栈

    BZOJ_3879_SvT_后缀数组+单调栈 Description (我并不想告诉你题目名字是什么鬼) 有一个长度为n的仅包含小写字母的字符串S,下标范围为[1,n]. 现在有若干组询问,对于每一个 ...

  6. BZOJ_4518_[Sdoi2016]征途_斜率优化

    BZOJ_4518_[Sdoi2016]征途_斜率优化 Description Pine开始了从S地到T地的征途. 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站. Pine计划用m天到 ...

  7. BZOJ_1257_ [CQOI2007]余数之和sum_数学

    BZOJ_1257_ [CQOI2007]余数之和sum_数学 题意:给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值. 分 ...

  8. BZOJ_4002_[JLOI2015]有意义的字符串_矩阵乘法

    BZOJ_4002_[JLOI2015]有意义的字符串_矩阵乘法 Description B 君有两个好朋友,他们叫宁宁和冉冉.有一天,冉冉遇到了一个有趣的题目:输入 b;d;n,求 Input 一行 ...

  9. mysql保存不了4字节的问题(也就是表情)

    这个问题   https://blog.csdn.net/ppwangGS/article/details/62044887 有详细的解决办法 这里我就是记录一下我遇到的问题 这种问题一般是往数据库 ...

  10. sublime 基本的配置

    { "font_size": 14.6, // font size "ignored_packages": [ "Vintage" ], & ...