Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Настройка REDIS
Форумы портала PHP.SU » Серверное администрирование » Администрирование БД » Настройка REDIS

Страниц (1): [1]
 

1. Kot137 - 26 Февраля, 2017 - 12:22:05 - перейти к сообщению
Здравствуйте!
Есть ubuntu 16.04 х64, на виртуальном сервере, установлен REDIS, использую его в PHP 7. REDIS использую как КЭШ оболочку MySQL – в нем хранятся характеристики 7-10тыс объектов, в том числе географические координаты. При заполнении множества координат с помощью GEOADD, после нескольких тысяч записей начинают пропадать объекты занесенные вначале. Т.е.
PHP:
скопировать код в буфер обмена
  1. $m->GEORADIUS($redis_index.'all_obj',$coordy, $coordx, $radius, "m", []);
выдает, например не 4тыс точек, а 2тыс.
В redis.conf установил: maxmemory 734003200 однако, процесс сервера использует всего 35Mb. (На сервере общий объем RAM - 1Gb, занято всего 40%).
Поставил maxmemory-policy noeviction – чтобы поймать его на нехватке памяти, но он не ругается, что памяти нет. Просто по-тихому удаляет, даже не ключи, а записи из множества ключа.
При перезапуске REDIS имею:
CODE (htmlphp):
скопировать код в буфер обмена
  1. root@127262-10001:~# redis-server /etc/redis/redis.conf                                                     4902:C 26 Feb 13:03:54.517 # systemd supervision requested, but NOTIFY_SOCKET not found
  2. 4902:M 26 Feb 13:03:54.518 * Increased maximum number of open files to 10032 (it was originally set to 1024).
  3. 4902:M 26 Feb 13:03:54.519 # Creating Server TCP listening socket 127.0.0.1:6379: bind: Address already in use
  4.  
(Не знаю, что это значит и не уверен, что это связанно с проблемой)

Может в REDIS ограничение по максимальному объему одного Key?
Подскажите, как грамотно настроить REDIS чтобы избежать потерь данных?
2. Kot137 - 26 Февраля, 2017 - 16:22:10 - перейти к сообщению
Разобрался. Ошибка была совсем в другом месте: я сам херил часть точек в множестве. В процедуре обновления удалял точку затем создавал новую и переаутал долготу с широтой:
PHP:
скопировать код в буфер обмена
  1. $m->ZREM($redis_index . 'all_obj', $row['id']);
  2. $m->GEOADD($redis_index . 'all_obj', $row['coordy'], $row['coordx'], $row['id']);

В итоге часть объектов просто не добавлялось, т.к. координаты выходили за диапазон.

2) Написал тест, который показал, что значительное увеличение объема данных хранимых в REDIS не приводит к потерям и сбоям.

3) systemd supervision requested, but NOTIFY_SOCKET not found - вылечил, поменяв в конфиге на supervised auto

4) с Increased maximum number of open files to 10032 (it was originally set to 1024). я так и не разобрался, если кто знает напишите, что это?

 

Powered by ExBB FM 1.0 RC1