Я работаю над тем, чтобы сделать что-то подобное, но с RSS-лентами.Я обнаружил, что мне действительно нравится синтаксис redis , который позволяет вам использовать как можно более сложный и жестко структурированный словарь, но со всеми преимуществами доступа к любому из основных современных типов данных,выложено на хэш-карте.Есть очень простые в использовании клиенты на множестве разных языков, но все сводится к размышлениям о том, как можно надежно структурировать строковые шаблоны, чтобы найти то, что вы хотите, как показано ниже, в значении «действие» «ключ» шаблона.', где $ обозначает компонент variabe данной строки:
get locality:$id = name
list locality:dwellings = [dwelling:id, dwelling:id ...]
map-get dwelling:id 'typical_value' = 'rank: $rank\tvalue: $value'
Я использую PHP для непосредственного взаимодействия с Redis и выполняю вызовы на стороне клиента через асинхронные взаимодействия jQuery $ .post с интерфейсом на стороне сервера.который направляет команды в класс доступа Redis.Интерфейс довольно прост.Вот сторона jQuery.
/*QUERY
*functional programming puts a big emphasis on "wrapping" repetitive tasks inside
*another function. This one amounts to the same thing as a protocol in
*Clojure, with the query map acting as the dispatch value that triggers
*the right method on the server side, recieves and parses the response,
*and then passes it on to the "body" of the client logic expressed in callback,
*which causes side effects on the screen.
*/
redgets.query = function(query_map, callback) {
$.post(redgets.router, query_map, function(data) {
return callback($.parseJSON(data));
});
};
и пример query_map выглядит следующим образом:
{method: 'locality_by_id', localityID: 'locality:1'}
, который, например, маршрутизатор PHP может интерпретировать с:
$response = array();
switch ($_POST['method']) {
case 'locality_by_id':
if ($_POST['localityID']) {
$response = $this->locality_by_id($_POST['localityID']);
break;
//etc, until
return json_encode($response);
}
где $ this-> locality_by_id () - это запрос, который вы написали, чтобы касаться redis через клиентский интерфейс predis .
Redis значительно ускоряет произвольный доступ к файлам XML и упрощает их переносвокруг вас, когда вы обернетесь вокруг, положив древовидные структуры данных на плоскую карту.Это означает, что вы должны написать анализатор, который преобразует элементы DOM в дружественные для перенаправления пары ключ-значение.Я уверен, что у вас есть идеи о том, как лучше всего это сделать.И после того, как вы написали конвертер, вам будет легко сделать обратное.
(я бы добавил больше ссылок, но спам-контроль sez no)