Вы можете использовать метод mget
для получения значений нескольких ключей за один вызов (возвращаемых в том же порядке, что и ключи):
data = r.mget(['123', '456'])
Для поиска ключей по определенному шаблону, используйте метод scan
:
cursor, keys = r.scan(match='123*')
data = r.mget(keys)
(Документация: https://redis-py.readthedocs.io/en/latest/ )
Как насчет при возврате данных из веб-сервиса? Вот два метода, которые подходят для.Net 2.0, которые берут DataTable или Параметр DataRow, и возвращают отформатированную строку JSON, которая будет отправлена клиенту от веб-сервиса:
public string GetJson(DataRow r)
{
int index = 0;
StringBuilder json = new StringBuilder();
foreach (DataColumn item in r.Table.Columns)
{
json.Append(String.Format("\"{0}\" : \"{1}\"", item.ColumnName, r[item.ColumnName].ToString().Replace("\"","\\\"")));
if (index < r.Table.Columns.Count - 1)
{
json.Append(", ");
}
index++;
}
return "{" + json.ToString() + "}";
}
public string GetJson(DataTable t)
{
int index = 0;
StringBuilder json = new StringBuilder();
foreach (DataRow currRow in t.Rows)
{
json.Append(GetJson(currRow));
if (index < t.Rows.Count - 1)
{
json.Append(", ");
}
}
return "[" + json.ToString() + "]";
}
Результат может затем быть отправлен и оценен на Клиенте.
Существует большое использование, API, веб-сервисы, и это имеет намного меньше служебный, чем XML. Как практический пример, можно заполнить дерево ExtJs или сетку с помощью данных JSON с несколькими строками кода.
При использовании ASP.NET MVC, действительно легко возвратить JSON из контроллера, чего-то вроде этого:
// this method return JSON directly
public JsonResult GetData() {
data = LoadData(); // load the data from a database or a service
return Json(data); // will serialize your data object as JSON
}
JSON хорош для добавления функциональности Ajax. Например, можно заполнить содержание ComboBox с некоторыми значениями, возвращенными запросом Ajax, возвратив объект JSON.
Ajax ASP.NET использует JSON внутренне. При использовании другой платформы, как jQuery, Вы делаете обоих сторона клиента и сервера сами.
JSON легко считать и людьми и компьютерами и представляет мало служебное. Клиентский код JavaScript может исходно проанализировать JSON.
Используйте JSON, потому что очень легко проанализировать в браузере - просто звонят eval()
и Вы в значительной степени сделаны.
Пока мы совместно используем DataTable к реализациям JSON:
public static string DataTableToJSON(DataTable dt)
{
string rowDelimiter = "";
StringBuilder result = new StringBuilder("[");
foreach (DataRow row in dt.Rows)
{
result.Append(rowDelimiter);
result.Append(DataRowToJSON(row));
rowDelimiter = ",";
}
result.Append("]");
return result.ToString();
}
public static string DataRowToJSON(DataRow row)
{
DataColumnCollection cols = row.Table.Columns;
string colDelimiter = "";
StringBuilder result = new StringBuilder("{");
for (int i = 0; i < cols.Count; i++)
{ // use index rather than foreach, so we can use the index for both the row and cols collection
result.AppendFormat("{0}\"{1}\":{2}",
colDelimiter, cols[i].ColumnName,
PrepJSONValue(row[i], cols[i].DataType));
colDelimiter = ",";
}
result.Append("}");
return result.ToString();
}
// possible types:
// http://msdn.microsoft.com/en-us/library/system.data.datacolumn.datatype(VS.80).aspx
private static Type[] numeric = new Type[] {typeof(byte), typeof(decimal), typeof(double),
typeof(Int16), typeof(Int32), typeof(SByte), typeof(Single),
typeof(UInt16), typeof(UInt32), typeof(UInt64)};
private static long EpochTicks = new DateTime(1970, 1, 1).Ticks;
private static string PrepJSONValue(object value, Type DataType)
{
// null
if (value == DBNull.Value) return "null";
// numeric
if (Array.IndexOf(numeric, DataType) > -1)
return value.ToString(); // TODO: eventually want to use a stricter format
// boolean
if (DataType == typeof(bool))
return ((bool)value) ? "true" : "false";
// date -- see http://weblogs.asp.net/bleroy/archive/2008/01/18/dates-and-json.aspx
if (DataType == typeof(DateTime))
return "\"\\/Date(" + new TimeSpan(((DateTime)value).ToUniversalTime().Ticks - EpochTicks).TotalMilliseconds.ToString() + ")\\/\"";
// TODO: add Timespan support
// TODO: add Byte[] support
// string/char
return "\"" + value.ToString().Replace(@"\", @"\\").Replace(Environment.NewLine, @"\n").Replace("\"", @"\""") + "\"";
}
Вызов Ajax, который возвращает объект JSON, может быть преобразован в объект JavaScript тривиально, например.
var jsObject = eval( "(" + ajaxCallReturningJson(whatever) + ")" );
Это делает это очень удобным для передающих сложных данных клиенту, не имея необходимость делать пользовательское представление или дурачиться с XML/XSLT.
Это - способ непосредственно ввести объекты JavaScript, доступные во всем Вашем другом клиентском сценарии, с помощью нотации ООП, в веб-страницу, без парсинга или обработки, требуемой на стороне клиента.
JSON является путем, легче проанализировать, чем XML, и существует много опций сделать так.
Каковы Ваши альтернативы? XML более тяжел, чем JSON, таким образом, он использует больше пропускной способности (но мощный для проверки и преобразования данных), YAML требует добавления отступа и новых строк, делая его субоптимальным форматом для отправки по Http (но хороший для хранения журналов, данных и конфигураций). JSON является собственный JavaScript и свет, таким образом, это является большим на стороне клиента и для передачи по Http