есть ли опция, предоставляемая Redis для частичного обновления объектов кеша - PullRequest
0 голосов
/ 24 апреля 2020

Я храню данные в Redis, используя JCA (java caching api), где ключом является String, а значением - Object, который является JSON строкой. У меня есть требование выполнить частичное обновление значения кэша вместо получения значения кэша с помощью ключа, а затем изменить атрибут и выполнить операцию ввода с последним значением кэша

{
  "attribute1" : "value1",
   "attribute2 " : [
  {
   "attribute3" : "value3"
  }
]
}

Выше приведен пример формата json. Как объяснено выше, возможно обновить значение attribute1 с value1 до value2 без получения значения кэша с помощью ключа в redis

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Если вы используете JCache API (ie JSR-107), вы можете использовать Cache#invoke(K key, EntryProcessor<K,V,T> entryProcessor, Object... arguments) для выполнения обновления на месте вместо get-then-put. Согласно EntryProcessor javado c, Cache#invoke выполняется атомарно на ключе, поэтому вам не нужно беспокоиться о одновременных модификациях одной и той же записи в кэше.

0 голосов
/ 25 апреля 2020

Вы можете использовать скрипт Lua, чтобы при использовании библиотеки CJSON Lua вы обновляли элемент. Я поделился похожим примером на Как вложить список в структуру в Redis, чтобы уменьшить верхний уровень?

Не знаком с JCA, поэтому не уверен, что ваш клиент сделает это простым отправьте команду EVAL .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...