LINUX.ORG.RU

18
Всего сообщений: 69

redis веб интерфейс

всем привет

Подскажите плиз

Бесплатный веб интерфейс для редиса?

 ,

carter ()

Как справляетесь со слишком большой задержкой между серверами?

Допустим, есть проект. Допустим, у него база данных любого вида висит отдельно, в локальной сети. Кроме обычной физики, есть ещё и TCP/IP, авторизация, и прочее, что добавляет неприличное количество времени ожидания.

Как с этим справляются с админ-стороны? Со стороны кода - понятно, меньше запросов и больше данных за запрос. Предположительно, кто-то мог написать что-то типа прокси, которые работают по своему протоколу поверх UDP, например, авторизуются один раз, держат связь с сервером и гоняют туда-сюда сжатые команды. Про несколько реализаций прокси знаю, но не наткнулся ни на одно обсуждение в плане снижения задержек вокруг них - их используют для многосерверности, стабильности, и.т.д.

 , ,

alexmaru ()

in-memory db: альтернативы для Redis, Memcached

Есть что-нибудь проще, чем Redis?

Требуется хранение набора констант и набора массивов числовых значений, чтобы они были доступны из нескольких воркеров бэкенда на python. Т.е., библиотека доступа к базе данных должна быть thread-safe.

База нужна only in-memory, без хранения в постоянной памяти. Инициализировать я её буду вручную, при старте приложения.

 , ,

Mirage1_ ()

All.me | Senior Golang разработчик от 180net (Нижний Новгород)

Открылась вакансия Senior Golang разработчик для работы над нашим инновационным проектом all.me.

Офис: НН, Деловая 24к1

Наш стек технологий: • Golang; • MongoDb; • Redis; • Git; • *nix

Обязанности: Разработка сервисов на Golang; Написание unit-тестов; Создание качественного, легко поддерживаемого кода; Разработка новых и доработка существующих сервисов в backend.

Подробности: +7 (996) 009-06-82 (Telegram, WhatsApp, Viber) Oleg.Oltybaev@all.me

 , , , ,

Oleg_Oltybaev ()

redis haproxy - Error: Server closed the connection

всем привет

настроил redis через haproxy

конфиг haproxy

global
    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     40000
    user        haproxy
    group       haproxy
    daemon
    log         127.0.0.1 local2

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

defaults
mode tcp
maxconn 10000
timeout connect 5s
timeout client 100s
timeout server 100s


listen redis
    bind 192.168.123.14:8190
    mode tcp
    option tcplog
    option tcp-check
    tcp-check send AUTH\ PASSWD\r\n
    tcp-check expect string +OK
    tcp-check send PING\r\n
    tcp-check expect string +PONG
    tcp-check send info\ replication\r\n
    tcp-check expect string role:master
    tcp-check send QUIT\r\n
    tcp-check expect string +OK
    server redis01 redis01:8190 maxconn 10000 check inter 10s fall 3
    server redis02 redis02:8190 maxconn 10000 check inter 10s fall 3


далее запускаю команду

redis-cli -h 192.168.123.14 -p 8190 -a passwd ping
PONG
redis-cli -h 192.168.123.14 -p 8190 -a passwd ping
PONG
redis-cli -h 192.168.123.14 -p 8190 -a passwd ping
PONG
redis-cli -h 192.168.123.14 -p 8190 -a passwd ping
redis-cli -h 192.168.123.14 -p 8190 -a passwd ping

сначала через haproxy на редис коннект есть, далее пропадает.
перезапускаю haproxy, опять сначала коннект есть, через секунд 10 пропадает. при этом до этого несколько месяцев все работало нормально.

в логах ошибок не увидел. напрямую редис работает без проблем

 

carter ()

Очереди задач, потоки, мультипроцессы.

В общем. Есть такая проблема. Нужно сделать систему для распределенного выполнения задач. Причем, задачи эти крутятся долго - могут день, два. И могут добавлятся, так и удалятся.

И вопрос, каким образом лучше сделать такую систему? Характер задач - много общение с БД, сторонними REST API + обработка входящих данных от REST API - проверка по условиям приходящих данных. Те в большей мере IO, но и CPU также есть.

Сейчас есть с горем пополам работающее решение (писало чудо-юдо до меня). Решение состоит в том, чтобы на каждую задачу плодить thread… Сейчас среднее количество таких задач подошло к 150 и решение это работает… Откровенно х$%@#.. В общем, надо переделывать.

P.S Сам пока думаю о asyncio, или redis + multiprocessing + asyncio. Второе не особо нравится из-за нежелания бороться с пересозданием connection и т.п проблем. В идеале бы 1000 таких задач без проблем держать. Сейчас в одном интерпретаторе через потоки 150 и все стало очень медленно. По ресурсам CPU решение не критично. Есть сервер на 32 ядра. Можно грузить хоть все.

 , ,

crarkie ()

можно ли использовать только redis?

обычно redis используется как кеш к основной БД(реляционной). скажите, является ли хорошей практикой использовать только redis? то есть хранить в ней и критически важные данные, и не критически важные?

ведь есть же в redis команда bgsave, её можно пинать после каждой отправки данных

кроме того можно настроить конфиг redis так чтобы он периодически сохранял данные оперативной памяти на диск

разве этого всего недостаточно чтобы отказаться от «настоящей» БД типа postgres?

 

prozaik ()

как redis хранит данные всех пользователей?

решил научиться использовать redis, но пока не очень хорошо представляю общую картину. пометьте пожалуйста пункты, в которых я ошибаюсь:

1. redis это БД типа ключ-значение, которая живёт в оперативной памяти сервера. 
2. в ней хранятся некритично важные данные
3. например на сервере1 есть админка, написанная на питоне. на сервере2 есть postgres database. на сервере3 есть redis
4. хеш пароля и логины хранятся в postgres
5. всякие визуальные настройки и номера открытых пользователями админки вкладок хранятся в redis
6. для postgres и redis код админки отправляет разные типы запросов. то есть не бывает так, что через какой-нибудь прокси отправлятеся sql-запрос, а прокси уже сам решает отправить его как sql-запрос в postgres или как nosql-запрос в redis.

мне непонятна ситуация когда redis-сервер существует один и соответственно оперативная память у него одна. и при этом пользователей админки, скажем, миллион. как они будут делить оперативную память единственного сервера? ведь если каждому пользователю нужен гигабайт, то сервер не может предоставить миллион гигабайт оперативной памяти

 

prozaik ()

Вопрос о flask, воркерах и асинхронности

Доброго времени суток. Есть приложение на flask у которого есть задачи (6 парсингов). Каждый пользователь может самостоятельно загрузить нужные ему данные которые обрабатываются при помощи rq (база redis). Всё отлично работает, но меня беспокоит, что когда будет одновременно 30 запросов (учитывая что на один парсинг уходит от 10 секунд до 60) пользователи могут не дождаться ответов и просто уйти. Подскажите как поступать в таком случае, возможно очереди не удачный выбор или нужно добавить больше воркеров?

 , , , ,

q13 ()

redis sentinel, несколько баз в одном конфиге

всем привет

можно ли в одном конфиге redis sentinel прописать несколько редисов?

 

carter ()

redis sentinel, чем мониторить мастера?

всем привет

подскажите плиз

redis sentinel, чем мониторить мастера? имеется ввиду переправлять траффик в случае сбоя.

haproxy? без него никак?

 

carter ()

redis timeout

всем привет

начались таймауты в редисе.

System.TimeoutException: Exceeded timeout of 00:00:01

при этом никакой нагрузки особой на сервере нет.
может в конфиге нужно сделать какой то тюнинг?

daemonize yes
dbfilename "master.rdb"
tcp-keepalive 60
loglevel notice
databases 10
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
slave-priority 100
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

# Server
redis_version:4.0.6
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:de351cef197756ea
redis_mode:standalone
os:Linux 3.10.0-957.10.1.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:sync-builtin
gcc_version:4.4.7
process_id:5493
run_id:1e3ea875fbf2a5f20c9fd69efc30b412bf922c43
tcp_port:6379
uptime_in_seconds:58976
uptime_in_days:0
hz:10
lru_clock:5588529


# Clients
connected_clients:1415
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:7269027528
used_memory_human:6.77G
used_memory_rss:8172883968
used_memory_rss_human:7.61G
used_memory_peak:7707650912
used_memory_peak_human:7.18G
used_memory_peak_perc:94.31%
used_memory_overhead:81843077
used_memory_startup:758488
used_memory_dataset:7187184451
used_memory_dataset_perc:98.88%
total_system_memory:32695848960
total_system_memory_human:30.45G
used_memory_lua:29565952
used_memory_lua_human:28.20M
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:1.12
mem_allocator:jemalloc-3.6.0
active_defrag_running:0
lazyfree_pending_objects:0

# Persistence
loading:0
rdb_changes_since_last_save:150487
rdb_bgsave_in_progress:1
rdb_last_save_time:1565869553
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:31
rdb_current_bgsave_time_sec:3
rdb_last_cow_size:217522176
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
aof_last_cow_size:0

# Stats
total_connections_received:43037
total_commands_processed:420134670
instantaneous_ops_per_sec:14067
total_net_input_bytes:65070656068
total_net_output_bytes:154927754819
instantaneous_input_kbps:2480.40
instantaneous_output_kbps:5512.33
rejected_connections:21942
sync_full:2
sync_partial_ok:0
sync_partial_err:2
expired_keys:1683934
evicted_keys:0
keyspace_hits:203679687
keyspace_misses:24100895
pubsub_channels:1
pubsub_patterns:0
latest_fork_usec:258819
migrate_cached_sockets:0
slave_expires_tracked_keys:0
active_defrag_hits:0
active_defrag_misses:0
active_defrag_key_hits:0
active_defrag_key_misses:0

# Replication
role:master
connected_slaves:2
master_repl_offset:33669018449
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:33667969874
repl_backlog_histlen:1048576

# CPU
used_cpu_sys:5721.91
used_cpu_user:10380.10
used_cpu_sys_children:1989.55
used_cpu_user_children:12584.15

# Cluster
cluster_enabled:0


 ,

carter ()

ingress проброс порта

Добрый день, Подскажите как через ингресс пробросить порт

rules:
  - host: site.ru
    http:
      paths:
      - path: /
        backend:
          serviceName: site
          servicePort: 80
      - path: /
        backend:
          serviceName: redis
          servicePort: 6379      
Нужно пробросить наружу порт redis, но проброс не работает. Попадает все равно на 80 порт

 , ,

letema88 ()

redis как очистить кэш?

всем привет

только начала работать с redis/

нужно почистить кэш. боюсь удалить данные)

как правильно сделать?

 ,

carter ()

redis version:3.2.12 и 5.0.4. Не работает команда ZADD с опцией NX

127.0.0.1:6379> ZADD testkey1 1555251311246 test_message
(integer) 1
127.0.0.1:6379> ZADD testkey1 1555251311247 test_message
(integer) 0
127.0.0.1:6379> ZADD testkey1 1555251311247 test_message1
(integer) 1
127.0.0.1:6379> ZADD testkey1 NX 1555251311247 test_message
(integer) 0
127.0.0.1:6379> ZADD testkey1 NX 1555251311248 test_message
(integer) 0
127.0.0.1:6379> ZADD testkey1 NX 1555251311248 test_message1
(integer) 0
127.0.0.1:6379> ZADD testkey1 NX 1555251311248 test_message2

в описании https://redis.io/commands/ZADD пишут

ZADD options (Redis 3.0.2 or greater)

ZADD supports a list of options, specified after the name of the key and before the first score argument. Options are:

    XX: Only update elements that already exist. Never add elements.
    NX: Don't update already existing elements. Always add new elements.
...

Мне нужно именно добавить элемент у которого score будет отличаться 100%, но вполне возможно в поле member будет уже присутствующая в БД строка с другим score
По score я планирую упорядочивать и извлекать с удалением c использованием ZPOPMAX key [count] https://redis.io/commands/zpopmax

Что не так делаю?

PS

В рассылку redis написал, но мою проблему почему то не опубликовали

 

Vlad-76 ()

Кластер редисов

Доброго времени!

Есть два железных сервера с большим кол-вом оперативы. Их отредили быть редис-серверами (редис 5.0.4). Есть желание сделать нечто подобное кластеру мастер-слейв. У редиса есть штатно кластер мастер-слейв, но настойчиво рекомендуется использовать 3 пары мастер-слейв (всего 6 машин). Как я понял это из-за того, что в выборах Redis Cluster за отказоустойчивость голосуют только мастера.

Требования простые: на мастер пишем,читаем с мастера и слейва. И при сбое мастера - слейв должен стать мастером в автоматическом режиме. Обратно - можно и вручную.

Думал заюзать Redis Sentinel на двух этих хостах + третий Redis Sentinel где-то еще, для создания кворума.

Также смотрю в сторону Netflix dynomite. Это вообще идеально для меня в виде актив-актив кластера. Есть даже конфигурационный ямл для двух нод. Но также не ясно, что будет если связь между этими хостами пропадет. Каждая нода будет активна и принимать трафик клиентов в итоге данные не будут консистентны. Такой кейс в документации не освещен.

Кто-нибудь решал подобную задачу для двух хостов с редисом?

 

alex-123 ()

В наличии 16 гб оперативы, при установке maxmemory 5гб - работает, при 7гб вылетает Connection refused

В наличии 16 гб оперативы, при установке maxmemory 5гб - работает, при 7гб вылетает Connection refused . Всё это настаёт в конце когда лимит уже почти достигнут. В интернетах ничего не нашёл. Как дальше расширяться? Хочу чтоб оператива использовалась на максимуме ....... мои прошлые этапы борьбы с редисом Минут 10-15 редис работает, а потом Connection refused Failed to open DB connection.

 ,

taram ()

Минут 10-15 редис работает, а потом Connection refused Failed to open DB connection.

В итоге решения проблем по перегрузу процессора редис сервером, Redis сначала работает прекрасно, но потом дико тормозит 100% CPU! проблема вроде как решилась. Но возникла совсем другая.

Все ключи теперь записываются таким образом. #set $redis->hMset(‘someKey’, [‘hello’ => ‘world’, ‘someKey’ => ‘someValue’]); #get $redis->hGetAll(‘someKey’);

Рэдис отлично работает минут 15 а дальше

Connection refused Failed to open DB connection.

Никаких логов в nginx нет. В редис тоже ничего нового не написано.

slowlog get 10 (empty list or set)

вообще пустой.. я опять не знаю куда идти дальше.

 , ,

taram ()

Redis сначала работает прекрасно, но потом дико тормозит 100% CPU!

Рэдис использую как кэш временный на 1 день, без сохранения снапшотов. Сайт с посещаемостью от 50к. Изначально запускаю редис и он работает быстро - так как и нужно, но потом где-то через час он упирается в 100% CPU и начинает ниистово тормозить. Перезапускаю - и он снова работает великолепно. Слышал о том что это возможно из-за ключей удалённых какой-то мусор накапливается… Незнаю куда двигаться.

Server

redis_version:5.0.0 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:589bbec69921e7d1 redis_mode:standalone os:Linux 4.4.0-142-generic x86_64 arch_bits:64 multiplexing_api:epoll atomicvar_api:atomic-builtin gcc_version:5.4.0 process_id:10690 run_id:2bf978f1c4ac625d6f476055026dee521a6e2be6 tcp_port:6379 uptime_in_seconds:633 uptime_in_days:0 hz:10 configured_hz:10 lru_clock:6720524 executable:/root/redis-server config_file:/etc/redis/redis.conf

Clients

connected_clients:7 client_recent_max_input_buffer:215082 client_recent_max_output_buffer:102496 blocked_clients:0

Memory

used_memory:626516840 used_memory_human:597.49M used_memory_rss:619220992 used_memory_rss_human:590.54M used_memory_peak:626679184 used_memory_peak_human:597.65M used_memory_peak_perc:99.97% used_memory_overhead:5102146 used_memory_startup:791928 used_memory_dataset:621414694 used_memory_dataset_perc:99.31% allocator_allocated:627069472 allocator_active:649281536 allocator_resident:657899520 total_system_memory:16826458112 total_system_memory_human:15.67G used_memory_lua:13079552 used_memory_lua_human:12.47M used_memory_scripts:3805152 used_memory_scripts_human:3.63M number_of_cached_scripts:7252 maxmemory:1200000000 maxmemory_human:1.12G maxmemory_policy:allkeys-lru allocator_frag_ratio:1.04 allocator_frag_bytes:22212064 allocator_rss_ratio:1.01 allocator_rss_bytes:8617984 rss_overhead_ratio:0.94 rss_overhead_bytes:18446744073670873088 mem_fragmentation_ratio:0.99 mem_fragmentation_bytes:18446744073702256816 mem_not_counted_for_evict:0 mem_replication_backlog:0 mem_clients_slaves:0 mem_clients_normal:151170 mem_aof_buffer:0 mem_allocator:jemalloc-5.1.0 active_defrag_running:0 lazyfree_pending_objects:0

Persistence

loading:0 rdb_changes_since_last_save:21619 rdb_bgsave_in_progress:0 rdb_last_save_time:1550223763 rdb_last_bgsave_status:ok rdb_last_bgsave_time_sec:-1 rdb_current_bgsave_time_sec:-1 rdb_last_cow_size:0 aof_enabled:0 aof_rewrite_in_progress:0 aof_rewrite_scheduled:0 aof_last_rewrite_time_sec:-1 aof_current_rewrite_time_sec:-1 aof_last_bgrewrite_status:ok aof_last_write_status:ok aof_last_cow_size:0

Stats

total_connections_received:3976 total_commands_processed:28536173 instantaneous_ops_per_sec:70602 total_net_input_bytes:553074494 total_net_output_bytes:102416450 instantaneous_input_kbps:887.71 instantaneous_output_kbps:58.73 rejected_connections:0 sync_full:0 sync_partial_ok:0 sync_partial_err:0 expired_keys:0 expired_stale_perc:0.00 expired_time_cap_reached_count:0 evicted_keys:0 keyspace_hits:28500429 keyspace_misses:2099 pubsub_channels:0 pubsub_patterns:0 latest_fork_usec:0 migrate_cached_sockets:0 slave_expires_tracked_keys:0 active_defrag_hits:0 active_defrag_misses:0 active_defrag_key_hits:0 active_defrag_key_misses:0

Replication

role:master connected_slaves:0 master_replid:0c163b3898c1ce935bbf4a1938a635c22422c5f2 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:0 second_repl_offset:-1 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0

CPU

used_cpu_sys:3.392000 used_cpu_user:71.864000 used_cpu_sys_children:0.000000 used_cpu_user_children:0.000000

Cluster

cluster_enabled:0

Keyspace

db0:keys=7209,expires=0,avg_ttl=0

 , ,

taram ()

LOADING Redis is loading the dataset in memory

Периодически ловлю этот баг. Редис использую как перезаписываемый кэш, следовательно ничего не сохраняю на диске.

maxmemory-policy allkeys-lru maxmemory 100000000

stop-writes-on-bgsave-error no

Redis error: LOADING Redis is loading the dataset in memory

Находил инфу , где пишут что редис не успевает обработать запрос и нужно использовать что-то типо такого https://github.com/antirez/redis/issues/4624 (wait for redis)

Но пока не пробовал и похоже на костыль. Может кто вкурсе что делать?

 

taram ()