Является ли объект Riak ведро кэшируемым?
При использовании Python-клиента Basho получение значения для ключа состоит из двух операций:
- получать ведро
- получить значение из ведра
Как это:
bucket = client.bucket(bucket_name)
value = bucket.get(key)
Я иногда получаю None
назад для того же ведра. Это кажется бессмысленным, потому что корзина явно присутствует (я проверил вручную все узлы, на которых создан клиент). Таким образом, вопрос в том, можно / нужно ли кэшировать / локально хранить объект корзины?
1 ответ
Я не эксперт по клиенту Python, но, насколько я понимаю, вы должны держать свой экземпляр client.bucket рядом и использовать его несколько раз для выполнения операций над ним. Однако я бы не стал его кешировать, если под кешированием вы подразумеваете сериализацию его на диск или сохранение в кеше общей памяти. На самом деле, я бы также не стал делиться этим между несколькими потоками. И определенно не в разных процессах.
Получение экземпляра корзины достаточно дешево, и вы можете создавать его довольно часто. Тем не менее, рекомендуется хранить его и выполнять несколько операций над ним в тесных циклах или пока вы не закончили текущую работу.
Если вы используете несколько пулов соединений, убедитесь, что вы воссоздаете свои экземпляры корзины при повторном подключении.
Надеюсь, это поможет. Если нет, дайте нам больше деталей, возможно покажите нам код:)