コード例 #1
0
        /// <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)));
        }
コード例 #2
0
 /// <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);