1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/xiaoangg-redis_annotation

Клонировать/Скачать
README.md 14 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 06.06.2025 14:51 8ef4579
  1. Команда config set maxmemory 1gb устанавливает максимальный объем памяти в 1 гигабайт.

  2. Команда config resetstat сбрасывает статистику.

  3. Команда config rewrite перезаписывает конфигурационный файл.

  4. Команда config set maxmemory-policy allkeys-lru устанавливает политику управления памятью.

  5. Команда config get maxmemory-policy возвращает текущую политику управления памятью.

  6. Команда config set maxmemory 2gb устанавливает максимальный объем памяти в 2 гигабайта.

  7. Команда config set maxmemory-policy allkeys-lfu устанавливает политику управления памятью.

  8. Команда config set maxmemory-policy allkeys-random устанавливает политику управления памятью.

  9. Команда config set maxmemory-policy volatile-lru устанавливает политику управления памятью.

  10. Команда config set maxmemory-policy volatile-lfu устанавливает политику управления памятью.

  11. Команда config set maxmemory-policy volatile-random устанавливает политику управления памятью.

  12. Команда config set maxmemory-policy volatile-ttl устанавливает политику управления памятью.

  13. Команда config set maxmemory-policy noeviction устанавливает политику управления памятью.

  14. Команда config set maxmemory-policy allkeys-lru устанавливает политику управления памятью.

  15. Команда config set maxmemory-policy allkeys-lfu устанавливает политику управления памятью.

  16. Команда config set maxmemory-policy allkeys-random устанавливает политику управления памятью.

  17. Команда config set maxmemory-policy volatile-lru устанавливает политику управления памятью.

  18. Команда config set maxmemory-policy volatile-lfu устанавливает политику управления памятью.29. Команда config set maxmemory-policy volatile-random устанавливает политику управления памятью

  19. Команда config set maxmemory-policy volatile-ttl устанавливает политику управления памятью

  20. Команда config set maxmemory-policy noeviction устанавливает политику управления памятью

  21. Команда config set maxmemory-policy allkeys-lru устанавливает политику управления памятью

  22. Команда config set maxmemory-policy allkeys-lfu устанавливает политику управления памятью

  23. Команда config set maxmemory-policy allkeys-random устанавливает политику управления памятью

  24. Команда config set maxmemory-policy volatile-lru устанавливает политику управления памятью

  25. Команда config set maxmemory-policy volatile-lfu устанавливает политику управления памятью

  26. Команда config set maxmemory-policy volatile-random устанавливает политику управления памятью

  27. Команда config set maxmemory-policy volatile-ttl устанавливает политику управления памятью

  28. Команда config set maxmemory-policy noeviction устанавливает политику управления памятью

  29. Команда config set maxmemory-policy allkeys-lru устанавливает политику управления памятью

  30. Команда config set maxmemory-policy allkeys-lfu устанавливает политику управления памятью

  31. Команда config set maxmemory-policy allkeys-random устанавливает политику управления памятью

  32. Команда config set maxmemory-policy volatile-lru устанавливает политику управления памятью

  33. Команда config set maxmemory-policy volatile-lfu устанавливает политику управления памятью45. Команда config set maxmemory-policy volatile-random устанавливает политику управления памятью

    • Команда config set maxmemory-policy volatile-random устанавливает политику управления памятью
  34. Команда config set maxmemory-policy volatile-ttl устанавливает политику управления памятью

    • Команда config set maxmemory-policy volatile-ttl устанавливает политику управления памятью

47

Redis 5.0.3 исходный код с комментариями

Этот проект представляет собой исходный код Redis Yö5.0.3 с комментариями, исходный код взят с: https://github.com/antirez/redis. Ссылка: http://redisbook.com/ https://github.com/huangz1990/redis-3.0-annotated

Приложение: краткое описание функций различных исходных кодов

Первая часть: базовые данные и объекты

  • sds.c sds.h простые динамические строки

    реализация простых динамических строк в Redis.

    Преимущества sds по сравнению с C-строками

    • константная сложность получения длины строки
    • защита от переполнения буфера
    • уменьшение перераспределения памяти при изменении символов
    • безопасность для двоичных данных

    Мои вопросы

    • функция sdsnewlen unsigned char *fp;// указатель на флаги структуры Почему не использовать прямой доступ к структуре через ->flags?
  • adlist.h, adlist.c

    реализация двусвязного списка

  • dict.c dict.h

    реализация словаря

  • t_zset.c

    • реализация базовых данных для skip list (zls)
    • реализация данных типа отсортированные множества* intset.c intset.h

    Реализация целочисленных множеств

  • t_list.c

    Реализация очереди

  • quicklist.c

    Реализация быстрого списка

  • siphash.c

    Реализация функции sip-хэширования

  • skip list

    Определение структуры skip list находится в файле server.h Реализация интерфейса находится в файле t_zset.c

  • ziplist

    ziplist.h
    ziplist.c Мои вопросы

    • В конец сжатого списка конечный узел помечается значением 255. Как обрабатывается случай, если в списке присутствует узел со значением 255?
  • Строки

    t_string.c

  • endianconv.c endianconv.h

    Преобразование байтового порядка

  • object.c

    Создание и парсинг объектов;
    Возврат памяти;

Вторая часть: Реализация базы данных

=========================================

  • db.c db.h

    Реализация базы данных

  • expire.c

    Реализация времени жизни ключей; expire, pexpire, expireat, pexpireat, ttl, persist и другие команды;

    Возврат устаревших ключей

  • server.c

    Запуск, поддержка и завершение работы сервера.

  • rdb.c rdb.h

    Реализация RDB-постоянства

  • roi.c

    Простое абстрактное представление I/O для потоков, реализованное в Redis

  • aof.c

    Реализация AOF-постоянства

  • bio.c bio.h

    BACKGROUND I/O

  • ae.c ae.h ae_epoll.c ae_select.c ae_evport.c ae_kqueue.c

    Драйверы для событий файлов и событий времени

  • anet.c anet.h

    Обёртка для TCP-сокетов

  • networking.c

    Обёртка для TCP-сокетов

  • sentinel.c

    Реализация сentinels* config.c

    Реализация конфигурации

Третья часть Реализация многомашинной базы данных

  • replication.c

    Реализация репликации, мастер-слей

  • blocked.c

    Реализация блокировки

    Например, отключение всех заблокированных клиентов

  • cluster.c cluster.h

    Реализация кластера

Четвертая часть Реализация независимых функций

  • pubsub.c

    Реализация публикации/подписки

  • multi.c

    Реализация транзакций

  • sort.c qpsort.h qpsort.c

    Реализация сортировки

    • qpsort.h qpsort.c

      Процесс быстрой сортировки в qsort.c был адаптирован из классического реализации, используемой многими библиотеками.

      //TODO

      • Прочитать реализацию и сравнить с функцией qsort() из C-библиотеки;

      Быстрая сортировка, основанная на реализации qsort из NetBSD libc, была немного изменена для поддержки сортировки диапазонов;

  • bitop.c

    Реализация битовых массивов

    Вес Хэмминга (Википедия)

    知乎

  • slowlog.c

    Реализация журнала медленных запросов

  • util.c

    Вспомогательные утилиты

  • atomicvar.h Реализация атомарных переменных

  • intset.h intset.c

    Реализация целочисленного множества; когда множество содержит только целочисленные значения элементов и их количество невелико, Redis использует целочисленное множество в качестве базового представления ключа множества;

  • redisassert.h Система assert, созданная Redis

  • evict.c

    Обработка команды maxmemory (LRU вытеснение и другие стратегии). Стратегии вытеснения данных

  • rax.c
    Википедия: Базисное дерево

    Реализация базисного дерева

    Основные концепции:

    Для отображения длинных целых чисел, решение проблем коллизий хэша и проектирование размера таблицы хэширования является сложной задачей.

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

    Используя базисное дерево, можно быстро найти указатель на объект по длинному целому числу (например, по длинному ID). Это проще, чем использование хэш-отображения, и более экономично по памяти. Неправильно выбранный хэш-функционал может увеличить коллизии или привести к неэффективному использованию памяти.

    Базисное дерево — это многоветвчатое дерево поиска, где листовые узлы представляют собой фактические данные. Каждый узел имеет фиксированное количество указателей на дочерние узлы (каждый указатель называется слотом, n — размер базиса).* notify.c

    TODO Каковы функции notify.c? Вопросы ====================================

  • Какая разница между параметрами конфигурации supervised и daemon?

  • Как гарантируется согласованность данных во время выполнения команд write во время выполнения bgsave?

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/xiaoangg-redis_annotation.git
git@api.gitlife.ru:oschina-mirror/xiaoangg-redis_annotation.git
oschina-mirror
xiaoangg-redis_annotation
xiaoangg-redis_annotation
master