Twemproxy

Redis面试50题

空扰寡人 提交于 2019-12-05 07:37:31
1、什么是Redis? Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。 Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性 能消息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一 个功能加强版的memcached来用。 Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。 2、Redis相比memcached有哪些优势? (1) memcached所有的值均是简单的字符串,redis作为其替代者, 支持更为丰富的数据类型 (2) redis的速度比memcached快很多 (3) redis可以持久化其数据 3、Redis支持哪几种数据类型

Redis集群原理与搭建

痞子三分冷 提交于 2019-12-04 21:10:40
Redis 集群和主从不同,是把所有的数据按照算法分布在每一个节点上。 Redis集群之Twemproxy(nutcracker) Redis集群之Cluster toc 这里分别使用第三方 Twemproxy 和官方 Cluster 集群工具搭建 Twemproxy 优点:代理的方式,不用Redis相应的设置,对持久化不友好,适合做纯缓存 缺点:当添加、删除或者修改节点时,需要重新导入所有的数据。 Cluster 优点:没有服务端,可以在任意节点进入集群,主从自动切换 缺点:需要集群自行处理数据。节点之间通信,使用带宽大 Redis集群之Twemproxy(nutcracker) Twemproxy 是Twitter开源的一个 Redis 和 Memcache 集群工具 Twemproxy 后端的redis服务器不需要额外的配置, Twemproxy 会通过hash算法选择某个配置的后端 Redis 服务器去分配 key Twemproxy 只有一个库,集群不支持多库 Twemproxy 不支持所有的 Redis 命令: Twemproxy和Redis命令兼容性列表 Twemproxy 编译安装 Master1和Master2分别安装Redis并启动,不做主从 ## 安装Twemproxy和使用过程需要的YUM包 [root@Twemproxy ~]# yum install

redis

戏子无情 提交于 2019-12-03 01:37:22
1、什么是Redis? Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。 Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性 能消息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一 个功能加强版的memcached来用。 Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。 2、Redis相比memcached有哪些优势? (1) memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型 (2) redis的速度比memcached快很多 (3) redis可以持久化其数据 3、Redis支持哪几种数据类型?

Redis常见问题总结

匿名 (未验证) 提交于 2019-12-03 00:43:02
【本文内容来自网络总结】 Redis是一个开源、高性能、基于键值对的缓存与存储系统。 劣势:Redis是单线程,Memcached是多线程,在多核服务器上后者的性能理论上会更高一些。 优势:随着Redis3.0的推出,标志着memcache的所有功能都已经成了Redis的子集。同时Redis对集群的支持使得Memcache原有的第三方集群工具不再成为优势。因此,在新项目中使用Redis替代Memcache将会是非常好的选择。 (1)字符串类型 (Key-Value) 使用最多的类型 (2)散列类型 (Hash) 适合存储对象 (3)列表类型 (List) (4)集合类型 (Set) (5)有序集合类型 (Zset) 内存 Remote Dictionary Server(远程数据服务) 共六种数据淘汰策略。(分三类) 一、从已设置过期的数据集 (1)volatile-lru:从已设置过期时间的数据集中,选择最近最少使用的数据淘汰 (2)volatile-ttl:从已设置过期时间的数据集中,选择将要过期的数据淘汰 (3)volatile-random:从已设置过期时间的数据集中,任意选择数据淘汰 二、从整体数据集 (4)allkeys-lru:从全数据集中,选择最近最少使用的数据淘汰 (5)allkeys-random:从全数据集中任意选择数据淘汰 三、驱逐(默认策略-直接返回错误)

Redis异构集群之间数据迁移方案

本秂侑毒 提交于 2019-12-01 04:56:05
一、Redis集群迁移工具 最近在做Redis数据迁移,网上找了两款开源的Redis迁移工具。 第一种:redis-port Codis官方提供的一个工具,redis-port是一个Redis工具,通过解析rdb文件,实现Redis主节点和从节点的数据同步,我具体没有测试过。 简单来说,redis-port就是把自已伪装成slave,欺骗master来达到数据流同步的目地。 发送sync命令->接收rdb->解析rdb->过滤->回放rdb->回放master推送的同步数据 上面是原理流程,非常容易理解,解析完rdb后的每一步都可以高度定制。DBA看着是不是很熟悉? 非常像淘宝的 canal ,基于binlog做数据的增量消费。相比mysql replication的原理redis简单太多,增量的数据就是普通的命令,需要解析的只有rdb文件。 Github地址 : https://github.com/CodisLabs/redis-port 第二种:redis-migrate-tool redis-migrate-tool(简称RMT)是唯品会开源的redis数据迁移工具,主要用于异构redis集群间的数据在线迁移,即数据迁移过程中源集群仍可以正常接受业务读写请求,无业务中断服务时间。这篇blog主要内容包括工具特性简介、使用方法以及注意的要点。关于实现的原理

Twitter - twemproxy - memcached - Retry not working as expected

女生的网名这么多〃 提交于 2019-12-01 02:44:06
Simple setup: 1 node running twemproxy (vcache:22122) 2 nodes running memcached (vcache-1, vcache-2) both listening on 11211 I have the following twemproxy config: default: auto_eject_hosts: true distribution: ketama hash: fnv1a_64 listen: 0.0.0.0:22122 server_failure_limit: 1 server_retry_timeout: 600000 # 600sec, 10m timeout: 100 servers: - vcache-1:11211:1 - vcache-2:11211:1 The twemproxy node can resolve all hostnames. As part of testing I took down vcache-2. In theory for every attempt to interface with vcache:22122, twemproxy will contact a server from the pool to facilitate the attempt.

Twitter - twemproxy - memcached - Retry not working as expected

时光怂恿深爱的人放手 提交于 2019-11-30 21:33:42
问题 Simple setup: 1 node running twemproxy (vcache:22122) 2 nodes running memcached (vcache-1, vcache-2) both listening on 11211 I have the following twemproxy config: default: auto_eject_hosts: true distribution: ketama hash: fnv1a_64 listen: 0.0.0.0:22122 server_failure_limit: 1 server_retry_timeout: 600000 # 600sec, 10m timeout: 100 servers: - vcache-1:11211:1 - vcache-2:11211:1 The twemproxy node can resolve all hostnames. As part of testing I took down vcache-2. In theory for every attempt

Redis集群

家住魔仙堡 提交于 2019-11-30 12:47:11
 这节介绍Redis的集群模式  主从模式提供了读写分离的支持,Sentinel提供了高可用的保障,满足了读模式下的横向扩展,但主节点只有一个,集中式的写模式无法应对不断增长的写需求。  Redis 3.x 版本提供了Redis cluster 功能,服务端sharding使用槽作为分布式的解决方案。对于 2.x版本,则通过客户端API提供的客户端sharding方式,使用一致性哈希来实现数据分片。此外,twiter开源的 twemproxy 和豌豆荚的 codis ,则采用代理模式来实现。 1 服务端模式  对于客户端来说,整个集群被看做一个整体,客户端可以连接任意一个节点进行操作,就像操作单一Redis数据库一样。当客户端操作的key没有分配到该节点上时,会返回转向指令,指向正确的节点。 1.1 集群的建立  3.x 版本的Redis节点可以通过打开 clustrer-enabled 选项来开启服务器的集群模式,再通过 CLUSTER MEET <ip> <port> 命令连接其他节点。  新加入的节点B通过 CLUSTER MEET 命令同节点A建立连接后,节点A会通过 Gossip协议 将节点B的信息传播给集群中的其他节点,当其他节点发现新加入的节点B后也会主动同它建立连接。处于集群状态的节点同单机模式下的服务器实例没什么区别,只是只能使用 db 0 数据库

Redis集群技术及Codis实践

≯℡__Kan透↙ 提交于 2019-11-30 12:21:57
“高效运维最佳实践”是InfoQ在2015年推出的精品专栏,由触控科技运维总监萧田国撰写,InfoQ总编辑崔康策划。 前言 如开篇文章所言,高效运维包括管理的专业化和技术的专业化。前两篇我们主要在说些管理相关的内容,本篇说一下技术专业化。希望读者朋友们能适应这个转换,谢谢。 互联网早在几年前就已进入Web 2.0时代,对后台支撑能力的要求,提高了几十倍甚至几百倍。在这个演化过程中,缓存 系统 扮演了举足轻重的角色。 运维进化到今天,已经不是重复造轮子的时代。所以,我们在架构优化和 自 动化运维中,可以尽可能地选用优秀的开源产品,而不是自己完全从头再来(各种技术geek除外)。 本文主要讨论Redis集群相关技术及新发展,关于Redis运维等内容,以后另开主题讨论。 本文重点推荐Codis——豌豆荚开源的Redis分布式中间件(该项目于4个月前在GitHub开源,目前star已超过2100)。其和Twemproxy相比,有诸多激动人心的新特性,并支持从Twemproxy无缝迁移至Codis。 本文主要目录如下,对Redis比较了解的朋友,可跳过前两部分,直接欣赏Codis相关内容。 1. Redis常见集群技术 1.1 客户端分片 1.2 代理分片 1.3 Redis Cluster 2. Twemproxy及不足之处 3. Codis实践 3.1 体系架构 3.2 性能对比测试 3

Redis学习笔记(11)——Redis缓存集群方案

断了今生、忘了曾经 提交于 2019-11-29 20:01:32
由于单台 Redis 服务器的内存管理能力有限,使用过大内存的Redis又会使得服务器的性能急剧下降,一旦服务器发生故障将会影响更大范围业务,而Redis 3.0 beta1支持的集群功能还不适合生产环境的使用。于是为了获取更好的Redis缓存性能及可用性,很多公司都研发了Redis缓存集群方案。现对 NetFlix 、Twitter、国内的 豌豆荚 在缓存集群方面的解决方案进行一个汇总,以供读者参考,具体内容如下: 1、NetFlix对Dynamo的开源通用实现Dynomite Dynomite 是NetFlix对亚马逊分布式存储引擎Dynamo的一个开源通用实现,使用C/C++语言编写、以代理的方式实现的Redis缓存集群方案。Dynomite不仅能够将基于内存的Redis和Memcached打造成分布式数据库,还支持持久化的MySQL、 BerkeleyDB 、 LevelDB 等数据库,并具有简单、高效、支持跨数据中心的数据复制等优点。Dynomite的最终目标是提供数据库存储引擎不能提供的简单、高效、跨数据中心的数据复制功能。Dynomite遵循 Apache License 2.0开源协议 发布,更多关于Dynomite的信息请查看NetFlix技术博客对 Dynomite的介绍 。 2、Twitter的Redis/Memcached代理服务Twemproxy