/// <summary> /// Adds the specified geospatial members (latitude, longitude, object) to the specified key. /// </summary> /// <typeparam name="T">The member type</typeparam> /// <param name="key">The redis key.</param> /// <param name="members">The members to add.</param> /// <param name="tags">The tags to relate to the members.</param> /// <returns>The number of elements added to the sorted set, not including elements already existing.</returns> public int GeoAdd <T>(string key, GeoMember <T>[] members, string[] tags = null) { var db = RedisConnection.GetDatabase(); var values = new List <RedisValue>(); foreach (var member in members) { values.AddRange(new RedisValue[] { member.Position.Longitude, member.Position.Latitude, Serializer.Serialize(member.Value) }); } int result = (int)db.ScriptEvaluate(LuaScriptResource.GeoAdd, new RedisKey[] { key }, values.ToArray()); // Relate the tags (if any) if (tags != null && tags.Length > 0) { foreach (var member in members) { _cacheProvider.AddTagsToSetMember(key, member.Value, tags); } } return(result); }
/// <summary> /// Adds the specified geospatial members (latitude, longitude, object) to the specified key. /// </summary> /// <typeparam name="T">The member type</typeparam> /// <param name="key">The redis key.</param> /// <param name="members">The members to add.</param> /// <param name="tags">The tags to relate to the members.</param> /// <returns>The number of elements added to the sorted set, not including elements already existing.</returns> public int GeoAdd <T>(string key, GeoMember <T>[] members, string[] tags = null) { var db = RedisConnection.GetDatabase(); var values = new GeoEntry[members.Length]; for (int i = 0; i < values.Length; i++) { var member = members[i]; values[i] = new GeoEntry(member.Position.Longitude, member.Position.Latitude, Serializer.Serialize(member.Value)); } int result = (int)db.GeoAdd(key, values); // Relate the tags (if any) if (tags != null && tags.Length > 0) { foreach (var member in members) { _cacheProvider.AddTagsToSetMember(key, member.Value, tags); } } return(result); }