@@ -177,6 +177,21 @@ public interface RedisJsonAsyncCommands<K, V> {
177177 */
178178 RedisFuture <List <JsonValue >> jsonArrpop (K key , JsonPath jsonPath , int index );
179179
180+ /**
181+ * Remove and return the JSON value at a given index in the array at a given {@link JsonPath} as raw JSON strings.
182+ * <p>
183+ * Behaves like {@link #jsonArrpop(Object, JsonPath, int)} but returns {@code List<String>} with raw JSON instead of
184+ * {@link JsonValue} wrappers.
185+ *
186+ * @param key the key holding the JSON document.
187+ * @param jsonPath the {@link JsonPath} pointing to the array inside the document.
188+ * @param index the index of the element to be removed. Default is -1, meaning the last element. Out-of-range indexes round
189+ * to their respective array ends. Popping an empty array returns null.
190+ * @return List<String> the removed element, or null if the specified path is not an array.
191+ * @since 7.0
192+ */
193+ RedisFuture <List <String >> jsonArrpopRaw (K key , JsonPath jsonPath , int index );
194+
180195 /**
181196 * Remove and return {@link JsonValue} at index -1 (last element) in the array at a given {@link JsonPath}
182197 *
@@ -187,6 +202,19 @@ public interface RedisJsonAsyncCommands<K, V> {
187202 */
188203 RedisFuture <List <JsonValue >> jsonArrpop (K key , JsonPath jsonPath );
189204
205+ /**
206+ * Remove and return the JSON value at index -1 (last element) in the array at a given {@link JsonPath} as raw JSON strings.
207+ * <p>
208+ * Behaves like {@link #jsonArrpop(Object, JsonPath)} but returns {@code List<String>} with raw JSON instead of
209+ * {@link JsonValue} wrappers.
210+ *
211+ * @param key the key holding the JSON document.
212+ * @param jsonPath the {@link JsonPath} pointing to the array inside the document.
213+ * @return List<String> the removed element, or null if the specified path is not an array.
214+ * @since 7.0
215+ */
216+ RedisFuture <List <String >> jsonArrpopRaw (K key , JsonPath jsonPath );
217+
190218 /**
191219 * Remove and return {@link JsonValue} at index -1 (last element) in the array at the {@link JsonPath#ROOT_PATH}
192220 *
@@ -196,6 +224,19 @@ public interface RedisJsonAsyncCommands<K, V> {
196224 */
197225 RedisFuture <List <JsonValue >> jsonArrpop (K key );
198226
227+ /**
228+ * Remove and return the JSON value at index -1 (last element) in the array at the {@link JsonPath#ROOT_PATH} as raw JSON
229+ * strings.
230+ * <p>
231+ * Behaves like {@link #jsonArrpop(Object)} but returns {@code List<String>} with raw JSON instead of {@link JsonValue}
232+ * wrappers.
233+ *
234+ * @param key the key holding the JSON document.
235+ * @return List<String> the removed element, or null if the specified path is not an array.
236+ * @since 7.0
237+ */
238+ RedisFuture <List <String >> jsonArrpopRaw (K key );
239+
199240 /**
200241 * Trim an array at a given {@link JsonPath} so that it contains only the specified inclusive range of elements. All
201242 * elements with indexes smaller than the start range and all elements with indexes bigger than the end range are trimmed.
@@ -272,6 +313,20 @@ public interface RedisJsonAsyncCommands<K, V> {
272313 */
273314 RedisFuture <List <JsonValue >> jsonGet (K key , JsonGetArgs options , JsonPath ... jsonPaths );
274315
316+ /**
317+ * Return the value at the specified path in JSON serialized form as raw strings.
318+ * <p>
319+ * Behaves like {@link #jsonGet(Object, JsonGetArgs, JsonPath...)} but returns {@code List<String>} with raw JSON instead of
320+ * {@link JsonValue} wrappers.
321+ *
322+ * @param key the key holding the JSON document.
323+ * @param options the {@link JsonGetArgs} to use.
324+ * @param jsonPaths the {@link JsonPath}s to use to identify the values to get.
325+ * @return List<String> the value at path in JSON serialized form, or null if the path does not exist.
326+ * @since 7.0
327+ */
328+ RedisFuture <List <String >> jsonGetRaw (K key , JsonGetArgs options , JsonPath ... jsonPaths );
329+
275330 /**
276331 * Return the value at the specified path in JSON serialized form. Uses defaults for the {@link JsonGetArgs}.
277332 * <p>
@@ -290,6 +345,19 @@ public interface RedisJsonAsyncCommands<K, V> {
290345 */
291346 RedisFuture <List <JsonValue >> jsonGet (K key , JsonPath ... jsonPaths );
292347
348+ /**
349+ * Return the value at the specified path in JSON serialized form as raw strings. Uses defaults for the {@link JsonGetArgs}.
350+ * <p>
351+ * Behaves like {@link #jsonGet(Object, JsonPath...)} but returns {@code List<String>} with raw JSON instead of
352+ * {@link JsonValue} wrappers.
353+ *
354+ * @param key the key holding the JSON document.
355+ * @param jsonPaths the {@link JsonPath}s to use to identify the values to get.
356+ * @return List<String> the value at path in JSON serialized form, or null if the path does not exist.
357+ * @since 7.0
358+ */
359+ RedisFuture <List <String >> jsonGetRaw (K key , JsonPath ... jsonPaths );
360+
293361 /**
294362 * Merge a given {@link JsonValue} with the value matching {@link JsonPath}. Consequently, JSON values at matching paths are
295363 * updated, deleted, or expanded with new children.
@@ -335,6 +403,19 @@ public interface RedisJsonAsyncCommands<K, V> {
335403 */
336404 RedisFuture <List <JsonValue >> jsonMGet (JsonPath jsonPath , K ... keys );
337405
406+ /**
407+ * Return the values at the specified path from multiple key arguments as raw JSON strings.
408+ * <p>
409+ * Behaves like {@link #jsonMGet(JsonPath, Object[])} but returns {@code List<String>} with raw JSON instead of
410+ * {@link JsonValue} wrappers.
411+ *
412+ * @param jsonPath the {@link JsonPath} pointing to the value to fetch.
413+ * @param keys the keys holding the values to fetch.
414+ * @return List<String> the values at path, or null if the path does not exist.
415+ * @since 7.0
416+ */
417+ RedisFuture <List <String >> jsonMGetRaw (JsonPath jsonPath , K ... keys );
418+
338419 /**
339420 * Set or update one or more JSON values according to the specified {@link JsonMsetArgs}
340421 * <p>
0 commit comments