Лучший способ сериализации ключа байтового массива в Redis с Booksleeve
Мне нужно найти лучшую реализацию для отправки байтового массива в пространство ключей сервера Redis с помощью Booksleeve.
Я пробовал другую реализацию, такую как UTF8 Encoding, но я не знаю, какая из них наиболее оптимизирована в памяти сервера Redis (я буду работать с миллионами ключей, как это, поэтому мне действительно нужен самый короткий ключ в памяти).
У кого-нибудь уже было это требование?
1 ответ
В текущей сборке для простоты я придерживался строковых ключей, однако код прекрасно обрабатывал бы двоичный код - он использует двоичный API. IIRC Только на этой неделе я получил патч в своем почтовом ящике, в котором добавлена поддержка двоичного ключа.
Так как это кажется востребованным, я посмотрю на это на этой неделе.
Изменить: неделя пришла и ушла; причина в том, что я также работаю над поддержкой redis-cluster, которая в любом случае потребует новых интерфейсов, потому что:
- не все операции поддерживаются
- параллельные (пронумерованные) базы данных не поддерживаются
В общем, мой план состоит в том, чтобы свести обе части работы в одну ветку, давая:
- новый набор интерфейсов
- которые используют
struct
дляkey
параметр с оператором неявного преобразования изstring
а такжеbyte
, позволяя использовать либо взаимозаменяемо - с помощью команд redis-cluster и redis-server на отдельных API
- и новый метод для старого соединения, чтобы получить один из новых API для каждой БД, т.е.
Database(3).Keys.Remove(key);
или что-то типа того
- которые используют
ETA все еще воображаема, но я хотел объяснить, почему я не просто добавил этот существующий патч - я думаю, что появление redis-cluster делает хорошее время для пересмотра всего API, (но, очевидно, таким способом, который сломать существующий код).