2013-04-26 2 views
2

J'ai besoin de trouver la meilleure implémentation pour envoyer un tableau d'octets à l'espace clé d'un serveur Redis avec Booksleeve. J'ai essayé différentes implémentations comme UTF8 Encoding mais je ne sais pas quelle est la plus optimisée en mémoire du serveur redis (je vais travailler avec des millions de clés comme ça donc j'ai vraiment besoin de la plus courte clé en mémoire).Meilleure façon de sérialiser une clé de tableau d'octets pour Redis avec Booksleeve

Est-ce que quelqu'un a déjà eu cette exigence?

+0

Redis prend en charge les données binaires. Vous n'avez pas besoin d'encoder quoi que ce soit pour envoyer un tableau d'octets à Redis. –

+0

J'ai remarqué que nous pourrions envoyer une valeur binaire mais je ne trouve aucune méthode pour envoyer une clé en binaire avec wrapper booksleeve. – baz

Répondre

1

Dans la version actuelle pour plus de simplicité, je me suis contenté de chaînes de caractères, mais le code traiterait bien binaire - il utilise l'API binaire. IIRC J'ai reçu un correctif dans ma boîte de réception cette semaine qui ajoute le support des clés binaires.

Comme il semble être en demande, je vais regarder cette semaine.


Édition: une semaine est venue et est passée; la raison étant que je fais aussi un peu de travail sur le soutien Redis-cluster, qui va avoir besoin de nouvelles interfaces de toute façon, parce que:

  • pas toutes les opérations sont prises en charge
  • bases de données parallèles (numérotées) ne sont pas pris en charge

donc, fondamentalement, mon plan est de faire rouler les deux morceaux de travail dans la même branche, donnant:

  • une nouvelle série de interfaces
    • qui utilisent un struct pour le paramètre key avec un opérateur de conversion implicite de string et byte, ce qui permet soit d'être utilisé de manière interchangeable
    • avec les Redis-munitions et les commandes Redis-serveur sur API séparées
    • et un nouvelle méthode sur l'ancienne connexion pour obtenir l'une des nouvelles API sur une base par DB, c.-à-Database(3).Keys.Remove(key); ou quelque chose comme ça

ETA est encore imaginaire, mais je voulais expliquer pourquoi je n'avais pas simplement jeté le patch existant - je pense que l'avènement de redis-cluster rend le moment idéal pour revisiter l'API entière, (mais évidemment d'une manière qui ne ne pas briser le code existant).

+0

Content que vous puissiez travailler sur cette fonctionnalité. Auriez-vous une date approximative de ce dev? En tout cas, merci pour votre super lib – baz

+0

@baz Je me suis rattrapé; Je vais éditer .. –

+0

Merci pour la réponse, je vais tester votre api dès sa sortie sur Nuget. – baz

Questions connexes