Member 1097736 Ответов: 0

Что это правильный путь, чтобы сохранить объект в 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);

0 Ответов