10 000 000 000 килобайт = 9 536,74316 гигабайт (если я не ошибаюсь - перепроверьте сами!)
Вы говорите "кэш", поэтому я предполагаю, что вам нужен быстрый кэш в памяти.
Итак, прежде всего, вам нужно достаточно большой объем ОЗУ для кэширования или несколько машин, которые добавляют до этого объем ОЗУ, а затем разделяются между ними.
Тогда это зависит от характера кэширования. Для очень простого кэширования значения ключа вы можете использовать Memcache. Если вам нужно больше операций, таких как наборы, отсортированные наборы, хеширование объектов и т. Д., Тогда Redis может быть очень хорошим выбором (см. типы данных и команды из Redis). Но не забудьте отключить постоянство в Redis, чтобы оно работало как непостоянный кеш.
Нужно обратить внимание на один момент - если вы используете одну программу для кэширования этих 9 ГБ данных, это должен быть 64-битный процесс. Это означает, что для хранения ваших 64-битных указателей могут потребоваться значительные дополнительные гигабайты. Если ваши ключи легко разделить на осколки, например, основанный на хешировании и операции по модулю (например, если ваши ключи будут естественно распределены с использованием этого или другого алгоритма шардинга), тогда ваш лучший способ - использовать несколько 32-битных экземпляров (вы можете запускать 32-битные программы даже на 64-битных машины) для хранения данных (либо на одной машине, если объем ОЗУ достаточно большой, либо разделены на несколько машин). В настоящее время ведется работа над кластером Redis, и я уверен, что для memcached должны быть инструменты, которые также делают это. Или вы можете осколок прямо в вашем клиенте.
Кроме того, стоит упомянуть, что если эти кэшированные данные могут фактически служить вашими основными данными, то вам может не потребоваться иметь две их копии - одну в БД и одну в кэше - потому что вы можете использовать постоянство опции, которые предлагает Redis (только добавление файла журнала и моментальные снимки), и вы можете использовать Redis в качестве основной базы данных.