2016-11-23 4 views
0

У меня есть вопрос, можно ли создать оператор поиска LIKE в Редисе? Подобно реляционной (mysql/oracle) базе данных.Как создать поиск оператора LIKE в кеше Redis с помощью nodejs?

У меня есть сложный:

JSON
{"_id" : ObjectId("581c8b8854fdcd1ff8c944e0"), 
"Objectcode" : "xxxxx", 
"Objecttype" : "xxxx", 
"docid" : "581c8b8554fdcd1ff8c93d10", 
"description" : "Tags based search .... ", 
"metaTags" : [ 
    "tag1", 
    "tag2", 
    "tag3", 
    "tag5", 
    "tag6", 
    "tag7", 
    "tag8", 
    "tag9", 
    "tag10" 
], 
"__v" : 0 

}

и я хочу, чтобы произвести поиск по массиву метатеги, как я могу это сделать?

Благодаря

ответ

0

Вы можете использовать Redis * SCAN команды http://redis.io/commands/scan, в зависимости от вашего type of data фильтрации по шаблону:

  • SCAN перебирает набор ключей в выбранной базе данных Redis ,
  • SSCAN Итерирует элементы Устанавливает.
  • HSCAN Итерирует поля типов Хэш и их ассоциированные значения.
  • ZSCAN Итерирует элементы Sorted Set и связанные с ними оценки.

Никогда не используйте КЛЮЧЕЙ в приложении кода, так как это может испортить работу.

Два основного nodejs Redis клиентских библиотек node_redis и ioredis поддерживает, с некоторыми синтаксическими:

const keys = []; 
const redis = new Redis(); // ioredis 
redis.mset('foo1', 1, 'foo2', 1, 'foo3', 1, 'foo4', 1, 'foo10', 1,() => { 
    const stream = redis.scanStream(); 
    stream.on('data', data => { 
    keys = keys.concat(data); 
    }); 
    stream.on('end',() => { 
    assert.equal(keys.sort(), ['foo1', 'foo10', 'foo2', 'foo3', 'foo4']); 
    }); 
}); 
+0

Вы перед тем, чтобы превратить IAND денормализовать его REDIS типов данных: http://redis.io/topics/data-types сосредоточив внимание на том, как вы ожидаете, чтобы запросить его – Dario

+0

HTTP : //www.rediscookbook.org/implement_tags_and_search_them.html – Dario

+0

спасибо, я использую npm redis not ioredis. выше ссылка очень нормальная JSON, но я ищу сложный JSON Search. большое спасибо. – ALAxmAnA

0

Вы можете использовать MATCH команды для поиска данных.

Eg: scan 0 MATCH *11* 

См: http://redis.io/commands/scan

+0

спасибо, я был судим выше ссылки, но нет удачи, перед этим вопросом сообщение. – ALAxmAnA