Twemproxy – Twitter 开源的 Redis proxy
在去年的QCon London2012 大会上,Twitter 发表了题为 《Timelines @ Twitter》的演讲,里面提到以 Redis 作为其timeline的主要存储,目前目测全球范围内,Twitter可能是Redis的最大用户了(或者是新浪微博?)。 而今天我们要说的这个Twemproxy,是 Twitter
在去年的QCon London2012 大会上,Twitter 发表了题为 《Timelines @ Twitter》的演讲,里面提到以Redis作为其timeline的主要存储,目前目测全球范围内,Twitter可能是Redis的最大用户了(或者是新浪微博?)。
而今天我们要说的这个Twemproxy,是 Twitter 开源出来的 Redis 和 Memcached 代理。
功能介绍
我们知道,无论是 Memcached 还是当前的 Redis,其本身都不具备分布式集群特性,当我们有大量 Redis 或 Memcached 的时候,通常只能通过客户端的一些数据分配算法(比如一致性哈希),来实现集群存储的特性。
而 Twemproxy 通过引入一个代理层,可以将其后端的多台 Redis 或 Memcached 实例进行统一管理与分配,使应用程序只需要在 Twemproxy 上进行操作,而不用关心后面具体有多少个真实的 Redis 或 Memcached 存储。
在 Redis 的 Cluster 方案还没有正式推出之前,通过 Proxy 的方式来实现存储集群可能是最好的选择了。更何况 Twemproxy 是通过 Twitter 自身得到了充分检验的产品。
性能
根据 Redis 作者的测试结果,在大多数情况下,Twemproxy 的性能相当不错,直接操作 Redis 相比,最多只有20%的性能损失。这对于它带来的好处来说真的是微不足道了。唯一可能还有待改进的是其 MGET 操作的效率,其性能只有直接操作 Redis 的 50%。
安装与配置
Twemproxy 的安装有点小麻烦,主要命令如下:
apt-get install automake apt-get install libtool git clone git://github.com/twitter/twemproxy.git cd twemproxy autoreconf -fvi ./configure --enable-debug=log make src/nutcracker -h
通过上面的命令就算安装好了,然后是具体的配置,下面是一个典型的配置
redis1: listen: 0.0.0.0:9999 #使用哪个端口启动Twemproxy redis: true #是否是Redis的proxy hash: fnv1a_64 #指定具体的hash函数 distribution: ketama #具体的hash算法 auto_eject_hosts: true #是否在结点无法响应的时候临时摘除结点 timeout: 400 #超时时间(毫秒) server_retry_timeout: 2000 #重试的时间(毫秒) server_failure_limit: 1 #结点故障多少次就算摘除掉 servers: #下面表示所有的Redis节点(IP:端口号:权重) - 127.0.0.1:6379:1 - 127.0.0.1:6380:1 - 127.0.0.1:6381:1 - 127.0.0.1:6382:1 redis2: listen: 0.0.0.0:10000 redis: true hash: fnv1a_64 distribution: ketama auto_eject_hosts: false timeout: 400 servers: - 127.0.0.1:6379:1 - 127.0.0.1:6380:1 - 127.0.0.1:6381:1 - 127.0.0.1:6382:1
你可以同时开启多个 Twemproxy 实例,他们都可以进行读写,这样你的应用程序就可以完全避免所谓的单点故障。
问题与不足
Twemproxy 由于其自身原理限制,有一些不足之处,如:
- 不支持针对多个值的操作,比如取sets的子交并补等(MGET 和 DEL 除外)
- 不支持Redis的事务操作
- 出错提示还不够完善
更多
更多关于Twemproxy的介绍可以看这里:http://antirez.com/news/44
Twemproxy的项目地址:https://github.com/twitter/twemproxy
42区 VPS
42qu.com 云主机 , 卖给创业的你 。 点击这里 , 查看详情

Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'embed_rssfooter' not found or invalid function name in /home/b55/htdocs/blog.nosqlfan.com/wp-includes/plugin.php on line 166


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Redémarrez Redis en spécifiant le fichier de configuration: 1. Trouvez le fichier de configuration (redis.conf habituellement situé dans le sous-répertoire conf); 2. Modifiez la configuration requise (comme la modification du port); 3. Utilisez la commande redis-server /path/to/redis.conf pour redémarrer Redis via le fichier de configuration (où /path/to/redis.conf est le chemin du fichier de configuration modifié); 4. Utilisez Redis-Cli pour vérifier qu'il a été redémarré avec succès.

Les données existent toujours après le redémarrage de Redis. Redis stocke les données en mémoire et le redémarrage ne supprime pas les données de mémoire. Redis fournit également de la persistance, enregistrant des données sur le disque dur via des fichiers RDB ou AOF, garantissant que les données peuvent être récupérées à partir de fichiers persistants après le redémarrage.

Comment redémarrer le service Redis dans différents systèmes d'exploitation: Linux / MacOS: utilisez la commande SystemCTL (SystemCTL Restart Redis-Server) ou la commande Service (Service Redis-Server Restart). Windows: Utilisez l'outil Services.MSC (entrez "Services.MSC" dans la boîte de dialogue Exécuter et appuyez sur Entrée) et cliquez avec le bouton droit sur le service "Redis" et sélectionnez "Redémarrer".

La commande redémarrée redis est redis-server. Cette commande est utilisée pour charger des fichiers de configuration, créer des structures de données, démarrer les serveurs Redis et écouter les connexions client. Les utilisateurs peuvent exécuter la commande "Redis-Server [Options]" dans le terminal pour redémarrer le serveur Redis. Les options communes incluent le fonctionnement de l'arrière-plan, la spécification du chemin du fichier de configuration, la spécification du port d'écoute et le rechargement des instantanés uniquement lorsque les données sont perdues. Notez que le redémarrage du serveur déconnectera toutes les connexions client, assurez-vous d'enregistrer les données nécessaires avant de redémarrer.

Comment nettoyer toutes les données Redis: redis 2.8 et ultérieurement: La commande Flushall supprime toutes les paires de valeurs clés. Redis 2.6 et plus tôt: utilisez la commande del pour supprimer les clés une par une ou utilisez le client redis pour supprimer les méthodes. Alternative: redémarrez le service redis (utilisez avec prudence) ou utilisez le client redis (tel que Flushall () ou FlushDB ()).

Il existe plusieurs mécanismes de communication entre les instances Redis: Pub / Sub: Mode Publish / Sub, permettant une messagerie efficace et à faible latence. Mode de cluster: méthode de déploiement distribué, offrant une haute disponibilité et une tolérance aux défauts. Commande d'installation croisée: permet d'envoyer directement les commandes à une autre instance, adaptée à des fins opérationnelles ou administratives temporaires.

Redis Restart n'efface pas les données car Redis stocke les données en mémoire et charge les données du stockage persistant tels que RDB ou AOF. Il existe deux types de stockage persistant: RDB et AOF, qui garantissent que les données ne sont pas perdues après le redémarrage. De plus, Redis a d'autres protections telles que les options d'instantané, la réplication et les sentinelles pour éviter la perte de données. Cependant, dans de rares cas, tels que la corruption persistante du stockage ou la terminaison accidentelle, cela peut entraîner une perte de données.

Redis fournit deux commandes pour afficher l'utilisation de la mémoire de toutes les touches dans la base de données: utilisation de la mémoire AllKeys: Renvoie l'utilisation de la mémoire de toutes les touches, dans le format: "clé" (type) # mémoire utilisée (octets) Informations Mémoire de la mémoire: fournit une liste détaillée d'informations d'utilisation de la mémoire pour toutes les touches dans chaque base de données.
