Список вопросов
Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
894
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Как работает memcache?
Просмотров: 413
 
Ответов: 6
Здравствуйте…
В стадии разработки проекта столкнулся с вопросом:
Нормально ли в 1 ключ пихать примерно 6 мб текста (объект ютуб класса) т.е. кешировать 6 мб текста в 1 ключе? Таких ключей по 6 мб может быть десятки тысяч.
И еще вопрос: мемкеш хранит данные на HDD или же в оперативной памяти?
Если в оперативной, то максимум я могу записать 64 метра (если предел стоит 64)?
Вчера на локалхосте проверял стату в мемкеше…
Number of bytes this server is allowed to use for storage установлено 64 Mega Bytes
А
Total number of bytes read by this server from network уже 69.00498104098 Mega Bytes
при этом
Number of valid items removed from cache to free memory for new items равен нулю…
Но почему тогда никакой перезаписи не произошло?
code.google.com/p/memcached/wiki/FAQ#Why_are_items_limited_to_1_megabyte_in_size?
1 запись в мемкеше не может быть больше 1 мегабайта. Чтобы хранить 6 мегабайт данных для каждого ключа вам придется определенным образом перекомпиллировать мемкеш, при этом возможно падение производительности и другие побочные эффекты.
Вообще memcached это механизм разработанный для кеширования веб-страниц, на которых редко бывает нужным хранить данные более 1 мегабайта длиной. Возможно, вам стоит поискать другое решение для кеширования данных, или придумать другой способ хранить ютуб-объекты в текстовом виде.
memcached — простая штука: это словарь (примерно как array в php или dict в python) ограниченного объема, висящий в памяти отдельным процессом с несложным протоколом доступа, который могут использовать другие процессы.
Если в него записать суммарно больше, чем выставленное ограничение на размер, то старые данные (которые дольше всех не использовались) затрутся.
Думайте об этом примерно как $a['vasia'] = 'petya', но как будто данные в переменной $a сохраняются между вызовами, доступны не только конкретному скрипту + сохранность этих данные не гарантирована.
По поводу ограничений на размер значений стоит почитать тут.
Вы на данном этапе хотите записывать десятки тысяч больших объектов (кстати, не понял, каких объектов — то это 6М текста, то что-то про youtube) в оперативную память, чтобы обеспечивать быстрый доступ к ним. Не знаю, та ли это задача, которую хотите решить. Тут потребуется перекомпиляция memcached и большое количество оперативной памяти.
Если я правильно понял вашу задачу, то инструмент вы выбрали явно неверный. Мемкеш не предназначен для таких обьемов данных 6мбх10000видео — 60гиг оперативы:) Я бы сами видео хранил в nosql базе, а топ500-1000 например закешировал в мемкеш.
>>Вчера на локалхосте проверял стату в мемкеше…
>>Number of bytes this server is allowed to use for storage установлено 64 Mega Bytes
>>А
>>Total number of bytes read by this server from network уже 69.00498104098 Mega Bytes
>>при этом
>>Number of valid items removed from cache to free memory for new items равен нулю…
Последний параметр это количество обьектов у которых время жизни еще не прошло, но их пришлось вытеснить из-за заполнения доступного лимита озу. А обьекты которые умерли «от старости» сюда не считаются — такчто ничего удивительного что инфы отдано больше чем есть в памяти — просто некоторая инфа успела сменится.
Ну и про сам мемкеш — вы сами можете выставить его обьем и время жизни обьектов
про Memcache рекомендую статью к прочтению www.opennet.ru/base/dev/memcached_tips.txt.html
многое должно прояснится. А вообще если сомнения «сломается — не сломается если на сайт придёт 100000 пользователей» попробуйте использовать прототипирование и тестирование.
Посмотреть что творится в memcache можно через telnet интерфейс
lzone.de/articles/memcached.htm
Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться