/// <summary> /// `JSON.MGET` /// /// Returns an IEnumerable of the specified result type. Non-existing keys and non-existent paths are returnd as type default. /// /// https://oss.redislabs.com/rejson/commands/#jsonmget /// </summary> /// <param name="db"></param> /// <param name="keys">Keys where JSON objects are stored.</param> /// <param name="path">The path of the JSON property that you want to return for each key. This is "root" by default.</param> /// <param name="commandFlags">Optional command flags.</param> /// <typeparam name="TResult">The type to deserialize the value as.</typeparam> /// <returns>IEnumerable of TResult, non-existent paths/keys are returned as default(TResult).</returns> public static async Task <IEnumerable <TResult> > JsonMultiGetAsync <TResult>(this IDatabaseAsync db, RedisKey[] keys, string path = ".", CommandFlags commandFlags = CommandFlags.None) { IEnumerable <TResult> CreateResult(RedisResult[] srs) { foreach (var sr in srs) { if (sr.IsNull) { yield return(default(TResult)); } else { yield return(SerializerProxy.Deserialize <TResult>(sr)); } } } return(CreateResult(await db.JsonMultiGetAsync(keys, path).ConfigureAwait(false))); }
/// <summary> /// `JSON.MGET` /// /// Returns the values at `path` from multiple `key`s. Non-existing keys and non-existing paths are reported as null. /// /// https://oss.redislabs.com/rejson/commands/#jsonmget /// </summary> /// <param name="db"></param> /// <param name="keys">Keys where JSON objects are stored.</param> /// <param name="path">The path of the JSON property that you want to return for each key. This is "root" by default.</param> /// <param name="commandFlags">Optional command flags.</param> /// <returns>Array of Bulk Strings, specifically the JSON serialization of the value at each key's path.</returns> public static Task <RedisResult[]> JsonMultiGetAsync(this IDatabaseAsync db, string[] keys, string path = ".", CommandFlags commandFlags = CommandFlags.None) => db.JsonMultiGetAsync(keys.Select(k => (RedisKey)k).ToArray(), path, commandFlags);