2013-07-08 2 views
2

У меня есть Socket.IO, подключенный к RedisStore, так что использование «socket.set()» будет хранить информацию в моей базе данных redis.Socket.IO & Redis (где все это происходит?)

Он делает это, создавая какую-то форму случайного ключа, который я могу только предположить, это уникальный идентификатор для сокета.

Моя проблема в этом. Из того, что я могу видеть, эти данные, которые я сохраняю, никогда не удаляются, если я его каким-то образом не удаляю вручную. Каждый новый сокет сохраняется и сохраняется, но старые никогда не удаляются, если я ничего не делаю для отключения. Однако это означает, что если я перезапущу узел или столкнулся с сбоем и т. Д., Эти данные будут сохраняться навсегда.

Моя цель пытается найти место для очистки базы данных старых ключей. Моя проблема в том, что мне трудно найти хороший способ найти эти старые ключи.

По идее решения, которое, как я думал, будет хранить эти ключевые имена в каком-то наборе. Затем я мог бы перебрать их и проверить, все ли они используются при запуске. Однако, насколько я могу судить, у меня нет способа найти используемый ключ.

Другой, хотя это было то, что я мог попробовать и перебрать все ключи, но это похоже на плохую идею. Я также не могу правильно различать ключи, которые они используют, с используемыми ключами, если я специально не избегаю использовать ключи определенной длины.

Итак, мой вопрос в том, имеет ли кто-нибудь хороший способ сохранить мою базу данных в чистоте или как я могу отслеживать ключи, которые использует socket.io в моей базе данных.

Спасибо, Сэмми

P.S. Если вам нужна дополнительная информация, или я был неясно, просто скажите мне, и я сделаю все возможное, чтобы объяснить.

ответ

1

Если вам просто нужно удалить ключи от использования, почему бы не использовать Redis ttl и expire. Вы можете установить значение expire для каждого использования, или некоторые из них, и установить его очень высоким. Если что-то идет без использования, скажем, через неделю, оно автоматически будет удалено для вас за кулисами.

+0

Это решает мою проблему с ключами, которые я добавляю, но не добавляет кеты, добавленные socket.io Если я закрою сокет, когда узел запущен, сокет удаляется из базы данных redis (через socket.io). Если узел закрыт или сработает, это не произойдет. Он просто сидит в базе данных навсегда (если я что-то не хватает). Насколько я могу судить, я не могу получить ключи, используемые socket.io. Но если бы я мог это решить вручную (установив на них EXPIRE). – Pluckerpluck

+0

Обнаружили, что сокеты имеют свойство socket.id, что позволяет мне это делать. Затем я использую срок действия. Благодарю. – Pluckerpluck

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