2014-04-09 1 views
2

Я использую redis для хранения информации о пользователях.Как пропустить ключ карты в REDIS?

я установить информацию многие используют под ключ «пользователь», как это:

"hset user userid1234 {...}". 

как сделать ключ «userid1234» в пользовательском истекает через несколько секунд позже?

есть несколько команд типа «expire», которые могут устанавливать только тайм-аут пользователя , но я не хочу, чтобы все в нем истекало.

Есть ли некоторые решения?

+1

От всего, что я могу сказать, это невозможно. Если эта функция важна для вас, вам, возможно, придется пересмотреть способ хранения информации. Например. вместо «пользователь hset userid1234 {...}« вы могли бы «установить пользователя: 1234 {...}» и установить ttl. –

+0

это нормально, но не так удобно использовать «user: 1234 {..}». Я должен использовать ключевого пользователя *, чтобы получить онлайн-пользователей. Нет таких команд, как hlen, который является O (1). Является ли моя модель данных странной? Я думаю, что команды, подобные «hexpire amap afiled seconds», полезны. – user2219372

+1

Вы можете попытаться индексировать свои элементы в другом zset (со временем как оценка), а затем периодически проверять его и вручную удалять элементы «expired» в сценарии lua, например. – zenbeni

ответ

4

Нет, это невозможно. TTL живет на клавише, а не на члене. И это не изменится.

О том, как с этим справиться, читайте предложения Иосии Карлсона here. Я также могу почитать его книгу.

Cheers, TW

Смежные вопросы