Что это правильный путь, чтобы сохранить объект в Redis?
Я использую StackExchange. redis и StackExchange.Редис.Библиотеки расширений для передачи данных в redis и из него.
Изначально я использовал клиент StackExchange.Рэдис,
var propertyList = ConvertToHashEntryList(productObject); db.HashSet("Product:" + productObject.ProductID, propertyList.ToArray());
где ConvertToHashEntryList вернет список HashEntry ( в котором propertyName-Rediskey, а PropertyValue-RedisValue).
ИНТЕРФЕЙС ПРИКЛАДНОГО ПРОГРАММИРОВАНИЯ :
db.HashSet(RedisKey key,HashEntry[] hashfields,CommandFlags)
Эта вставка в redis, по-видимому, имеет Product:xxxx....xxxx в качестве ключа и список хэш-объектов в качестве значения. Таким образом, это показывает, что один productObject будет содержать все свои свойства в виде хэш-записей.Один хэш-набор-один объект.
Хэш-продукт:Guid
Ключ | Значение
------------------
Свойство1 Значение1
Свойство2 Значение2
Свойство3 Значение3
Property4 Значения4
Состав Property5 Value5
--------------------------------------------------------------------------------------
В то время как в StackExchang.Редис.Расширение,
Dictionary<string, Product> objToBeAdded1 = new Dictionary<string, Product>(); for (int i = 0; i < 5; i++) { Product storedObject = GetNewProduct(); objToBeAdded1.Add(storedObject.ID.ToString(), storedObject); } cacheClient.HashSet<Product>("Products", objToBeAdded1, CommandFlags.None);
ИНТЕРФЕЙС ПРИКЛАДНОГО ПРОГРАММИРОВАНИЯ:
db.HashSet<T>(RedisKey key, Dictionary<string,T> object, CommandFlags);
Теперь вставка в Redis, по-видимому, имеет список объектов в качестве значения для ключа продукта.
где каждый объект сериализуется.
Хэш-продукт
Ключ | Значение
-----------
Guid1 {сериализованный объект 1 в json -1}
Guid2 {сериализованный объект 1 в json -2}
Guid3 {сериализованный объект 1 в json -3}
Оба API хранят объекты по-разному. Я хотел бы знать, какой подход лучше всего подходит для хранения объекта в redis?
Что я уже пробовал:
Клиент StackExchange.Рэдис
var propertyList = ConvertToHashEntryList(productObject); db.HashSet("Product:" + productObject.ProductID, propertyList.ToArray());
Стакексчанг.Редис.Расширение:
Dictionary<string, Product> objToBeAdded1 = new Dictionary<string, Product>(); for (int i = 0; i < 5; i++) { Product storedObject = GetNewProduct(); objToBeAdded1.Add(storedObject.ID.ToString(), storedObject); } cacheClient.HashSet<Product>("Products", objToBeAdded1, CommandFlags.None);