Comment stocker l'élément de la liste dans le cache Redis
J'ai utilisé StackExchange.Redis
pour c# cache redis.
cache.StringSet("Key1", CustomerObject);
mais je veux stocker des données comme
cache.StringSet("Key1", ListOfCustomer);
de sorte que l'on touche a tous les Clients de la Liste stockée et il est facile de
recherche,groupe,filtre les Données du client à l'intérieur de cette Liste
Réponses sont les bienvenus à l'aide de ServiceStack.Redis
ou StackExchange.Redis
OriginalL'auteur Neo | 2015-08-12
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser ServiceStack.Redis de haut niveau IRedisTypedClient Tapé API pour la gestion de riches Types POCO.
D'abord obtenir un tapé Redis client pour les Clients avec:
Qui permettra de résoudre un haut niveau tapé l'API pour la gestion de la Clientèle POCO qui vous permet alors de conserver un seul Client:
Ou une liste de Clients avec:
comment utiliser la liste à l'aide de
ServiceStack.Redis
?Dépend comment voulez-vous accéder à la liste. Serez-vous toujours récupérer la totalité de la liste de redis, ou voulez-vous pour gérer des éléments individuellement?
en fait les deux. pour les valeurs filtrées je vais utiliser individuels de la clientèle spectacle, je veux toute la liste des articles
REMARQUE: Quand j'ai lu "ServiceStack.Redis" n'était pas libre, je suis inquiet parce que je l'ai lu comme "StackExchange.Redis" (qui est en fait gratuit licence MIT). Peut-être que quelqu'un d'autre pourrait faire cette erreur, je voulais juste ajouter cet avertissement, car les noms sont similaires et facile d'erreur lors de la lecture rapidement.
OriginalL'auteur
Si vous utilisez Stackechange.Redis, vous pouvez utiliser la Liste des méthodes sur son API.
Voici une implémentation naïve de IList à l'aide d'un redis liste pour stocker les éléments.
Espérons que cela peut vous aider à comprendre certains de la liste des méthodes de l'API:
Notez l'utilisation de Newtonsoft.Json pour la sérialisation.
Vous aurez besoin des éléments suivants nu-obtenir des paquets:
Après la lecture de votre question et les commentaires, puisque vous voulez accéder à des éléments clés, je pense que vous êtes à la recherche pour Redis Hachages, qui sont des cartes composé de champs associés à des valeurs.
De sorte que vous pouvez avoir un Redis Clé pour une table de Hachage contenant l'ensemble de vos Clients, chacune étant une Valeur associée à un Champ. Vous pouvez choisir le code client du Champ, de sorte que vous pouvez ensuite obtenir un client par son id en O(1).
Je pense que la mise en œuvre de IDictionary est une bonne façon de le voir travailler.
Ainsi, un RedisDictionary catégorie similaire à la RedisList mais à l'aide d'un Redis Hachage pourrait être:
Et voici quelques exemples d'utilisation:
Mise À Jour (Octobre 2015)
Une meilleure mise en œuvre de ces collections peuvent être trouvés sur CachingFramework.Redis bibliothèque.
Ici est le code.
Merci beaucoup même que mon exigence est stocké à la clientèle valeurs dans une liste de clients et je en mesure d'obtenir les valeurs de la liste en passant le nom du client aussi
unble pour obtenir la clientèle des éléments à l'aide de
customers.AddMultiple(customerListFromDb.ToDictionary(k => k.Id));
Que faire si l'Id est généré automatiquement lors de l'Ajouter, et nous ne savons pas d'Id à l'avance. Dans ce cas, comment Ajouter de hachage?
Vous devez fournir une clé (sur le terrain) pour insérer un élément à un Redis Hachage. Vous pouvez utiliser un différent de votre Id
OriginalL'auteur
StackExchange.Redis a déjà des fonctions prédéfinies pour traiter de la liste et un ensemble de valeurs.
Obtenir IDatabase objet :
chaîne cacheConnection = Utils.Les Sections.Le stockage.RedisCache.ConnectionString;
IDatabase cache = ConnectionMultiplexer.Connect(cacheConnection).GetDatabase();
méthodes de la liste :
cache.ListLeftPushAsync(clé, valeur) -> faire une liste des éléments
cache.ListRangeAsync(clé, startIndex, endIndex) -> obtenir la liste des valeurs
cache.KeyExpire(clé, timspan)
s'il vous plaît emballer StackExchange.Redis pour plus de méthodes. Vous n'avez pas besoin d'inclure tout autre package nuget.
OriginalL'auteur