2015-12-04 2 views
0

Как я могу переопределить метод GET или написать новую функцию, которая будет выполняться на стороне сервера, возвращает другое значение ключа, если поиск ключа не существует?Redis pre GET event

Пример:

если ключ "word_1 word_2 word_3 word_4" не существует поиск этого ключа "word_1 word_2 word_3", если ключ "word_1 word_2 word_3" не существует поиск этого ключ "word_1 word_2", если ключ «word_1 word_2» не exsis искать этот ключ «word_1». Этот рекурсивный поиск должен быть на стороне сервера (для скорости).

ответ

1

Это должно быть сделано на вашем прикладном уровне, в Redis нет инфраструктуры, и я считаю, что никогда не будет частью продукта, потому что точка Redis является легкой и быстро вспыхивающей: Чем больше функций вы используете добавить в конвейер выполнения, тем больше производительности вы жертвуете ....

+0

У Hbase есть этот параметр (наблюдатель). preGet, postGet: вызывается до и после того, как клиент делает запрос Get. –

+0

Я бы рекомендовал использовать HBase? – tddmonkey

+0

@MrWiggles BTW Я по-прежнему предлагаю вам пойти с Redis и реализовать его на вашем прикладном уровне. Я не понимаю, почему вы не можете этого сделать: где вы выдаете команды 'GET', вы * вводите * код pre и post операций ... –

1

Эта функция не встроена в Redis, но если вы действительно хотите, чтобы это было сделано на сервере, вы можете использовать Lua-скрипт для этого.

Если вы не хотите делать, что альтернативой будет генерировать возможные ключи поиска, которые в вашем примере будет

word_1 word_2 word_3 word_4 
word_1 word_2 word_3 
word_1 word_2 
word_1 

, а затем выдать MGET, чтобы извлечь все ключи сразу , В вашей логике приложения вы можете просто перебирать результаты, получая первый, который имеет значение