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

OSCHINA-MIRROR/RocksCloud-rocksredis

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

! rocksredis логотип

Введение

​ RocksRedis — это улучшенная версия Redis-внутренней базы данных памяти, использующая RocksDB в качестве встроенной системы управления базой данных для обеспечения долговременного хранения данных Redis. ​ Высокие показатели производительности Redis уже сделали его основным выбором для управления кэшированием данных. Для Redis существуют два способа долговременного хранения данных: RDB и AOF. Первый представляет собой периодическое кэширование, а второй — запись в журнал. По мере увеличения размера файла снижается производительность чтения и записи Redis, поэтому Redis может использоваться только для управления кэшем определённого объёма данных. ​ RocksDB специально оптимизирован для быстрого и низкого задерживания хранилищ данных (например, флеш-памяти или высокопроизводительных жестких дисков). RocksDB максимально использует скорость чтения и записи флеш-памяти и RAM. RocksDB демонстрирует превосходную производительность при работе с большим количеством данных одновременно, поэтому требуется разделение «горячих» и «холодных» данных в RocksRedis для обеспечения эффективной работы batchwrite. ​ RocksRedis использует Magnet в качестве middleware для соединения и управления магнитным кэшем и постоянным слоем.Данные проходят через кэш Redis и затем через пулы потоков обработки данных Magnet для массового кэширования данных в RocksDB. RocksRedis поддерживает более чем 100 000 ключей, каждый из которых может содержать более одного миллиона записей. Одиночная версия RocksRedis может поддерживать более 10 триллионов записей. Примеры использования: RocksRedis идеально подходит для следующих случаев:

  1. Хранение данных отборочных устройств IoT и промышленной сети Интернет;
  2. Хранение резервных копий данных в частных облачных системах и данные для обучения искусственного интеллекта;
  3. Сценарии, где ограничены ресурсы, такие как использование Hadoop или HBase для хранения данных, могут быть заменены RocksRedis;
  4. Сценарии, где часто используется сочетание кэширования и долговременного хранения данных;
  5. Сценарии, где объём данных велик и частота записи высока. ###### Архитектура
! Архитектура RocksRedis
Установка

Содержимое директорий

|--libs
|--bin
  |--redis.conf
  |--runstart.sh

libs - каталог зависимостей для запуска RocksRedis
bin - каталог исполняемых программ RocksRedis
redis.conf - конфигурационный файл
runstart.sh - скрипт запуска > Описание конфигурационного файла redis.conf

########################### КОНФИГУРАЦИЯ ROCKSREDIS #######################
# Выбор базы данных Redis для использования в качестве канала RocksRedis
# Если Redis является кластером, то значение по умолчанию равно 0
# Если это одиночная установка, вы можете выбрать значения от 0 до 15
```# Если этот параметр закомментирован, база данных rocksredis будет закрыта,
# и rocksredis будет использоваться как кеш-база данных.
rocksredis_db_select 15
# Путь хранения данных rockredis
# По умолчанию путь равен /data
rocksredis_db_dir /home/data
# Размер батча для записи данных, который можно настроить в зависимости от частоты записи.
# Значение по умолчанию равно 2000
rocks_write_batch_size 2000
# Устанавливает размер одного memtable. Как только memtable превышает этот размер,
# он помечается как неизменяемый, а новый создаётся.
# Значение по умолчанию равно 64МБ, 64*1024*1024
write_buffer_size 67108864
# Устанавливает максимальное количество memtable, активных и неизменяемых.
# Если активный memtable заполнен, то общее число memtable больше max_write_buffer_number,
# мы будем приостанавливать последующие записи. Это происходит, когда процесс очистки медленнее, чем скорость записи.
# Значение по умолчанию равно 3
max_write_buffer_number 3
# Количество потоков для параллельной очистки диска.
# Обычно значение 1 достаточно.
# Здесь значение по умолчанию равно 4
max_background_flushes 4
# Максимальное количество потоков для фонового сжатия.
```# Значение по умолчанию равно 1, но чтобы использовать полностью ЦП и хранилище,
# можно увеличить это значение до количества ядер системы.
# Значение по умолчанию здесь равно 8
max_background_compactions 8
# Фоновый поток выполнения для обработки батча данных на диск
# Значение по умолчанию равно 10, которое можно настроить в соответствии с реальными потребностями
batch_write_background_threadpools 10```markdown
# Выбираем один db redis для использования в качестве канала постоянства rocksdb; 
# По умолчанию для одиночного экземпляра redis используются db0~db15, по умолчанию используется 15;
# Остальные db могут использоваться для кэширования redis в обычном режиме; если вы не хотите использовать rocksdb для постоянства,
# то можно установить rocksredis_db_select в -1;
rocksredis_db_select 15
# Путь хранения данных rocksredis
rocksredis_db_dir /home/data
# Размер батча для записи данных rocksredis
rocks_write_batch_size 2000
# Размер буфера записи rocksdb
write_buffer_size 67108864
# Максимальное количество буферов записи rocksdb
max_write_buffer_number 3
# Количество фоновых потоков для очистки rocksdb
max_background_flushes 4
# Максимальное количество фоновых потоков для объединения rocksdb
max_background_compactions 8
# Количество фоновых потоков для обработки батча данных rocksdb
batch_write_background_threadpools 10

Запуск

Выполнить скрипт запуска ./runstart.sh
6. 0. 8 — версия Redis
06 — версия RocksRedis

image-20210506113254448.png


Четвертый раздел. Использование

RocksRedis полностью совместим с методами работы Redis и командами, доступными в нем. Поддерживаемые команды:

 | ----- | ----------------------------------------------------------------------- |
 | 1     | [HDEL ключ поле1 поле2] Удаление одного или нескольких полей хеш-таблицы |
 | 2     | HEXISTS ключ поле Проверка наличия поля в хеш-таблице                   |
 | 3     | HGET ключ поле Получение значения указанного поля в хеш-таблице          |
 | 4     | HGETALL ключ Получение всех полей и значений хеш-таблицы                 |
 | 5     | HKEYS ключ Получение всех полей хеш-таблицы                              |
 | 6     | HLEN ключ Получение количества полей в хеш-таблице                       |
 | 7     | [HMGET ключ поле1 поле2] Получение значений указанных полей              |
 | 8     | [HMSET ключ поле1 значение1 поле2 значение2] Установка множества пар "поле-значение" в хеш-таблицу |
 | 9     | HSET ключ поле значение Установка значения поля в хеш-таблице            |
 | 10    | HSETNX ключ поле значение Установка значения поля в хеш-таблице при отсутствии этого поля |
 | 11    | HVALS ключ Получение всех значений хеш-таблицы                           |
 | 12    | HSCAN ключ курсор [MATCH шаблон] [COUNT количество] Итерация по парам "ключ-значение" хеш-таблицы |
 | 13    | DEL команда используется для удаления существующего ключа               |
 | 14    | STRLEN команда используется для получения длины строки, хранящейся под указанным ключом |
 | 15    | SCAN команда используется для итерации по всем ключам базы данных       |
 | 16    | TYPE команда используется для получения типа значения ключа            || 17    | Команда SADD добавляет один или несколько элементов в множество          |
 | 18    | Команда SCARD возвращает количество элементов в множестве               |
 | 19    | Команда SISMEMBER проверяет является ли элемент членом множества        |
 | 20    | Команда SMEMBERS возвращает все элементы множества                      |
 | 21    | Команда SPOP удаляет один или несколько случайных элементов из множества |
 | 22    | Команда SSCAN используется для итерации по элементам множества          |
 | 23    | Команда SREM используется для удаления одного или нескольких членов множества |
 | 24    | Команда SET используется для установки значения ключа. Если ключ уже имеет другое значение, SET заменяет старое значение, игнорируя тип данных. |
 | 25    | Команда GET используется для получения значения указанного ключа. Если ключ отсутствует, возвращается nil. Если ключ хранит значение, отличное от строки, возвращается ошибка. |> JAVA

Добавление зависимости Redis в pom.xml

redis.clients jedis 2.9.0 ```

PYTHON

Установка библиотеки Redis
pip install redis==2.10.6

C/C++

Импорт библиотеки hiredis.a
5. Оценка производительности
CPU: 2 ядра
Оперативная память: 8 ГБ
Вторичное жесткое накопление: 500 ГБ, фактическая производительность зависит от характеристик жесткого диска.
1. Тестирование производительности записи

Тест 1: Хэш-хранение, hsetnx()

Элементы: 10000, Данные: 1 КБ, Тип: String
Начало: Пнд Апр 26 13:36:21 CST 2021
Затраченное время: 28.324 (с)

! Введите описание изображения

Элементы: 50000, Данные: 1 КБ, Тип: String
Начало: Пнд Апр 26 13:36:21 CST 2021
Затраченное время: 65.102 (с)

! Введите описание изображения

Элементы: 100000, Данные: 1 КБ, Тип: String
Начало: Пнд Апр 26 15:09:03 CST 2021
Затраченное время: 172.914 (с)
```Тест 2: Хэш-хранение, hsetnx()

Элементы: 10000, Данные: 10 КБ, Тип: String Начало: Пнд Апр 26 15:26:14 CST 2021 Затраченное время: 27.288 (с)

### ! [Введите описание изображения](https://images.gitee.com/uploads/images/2021/0506/141400_99e02591_1205442.png "image-20210426152748437.png")

Элементы: 50000, Данные: 10 КБ, Тип: String Начало: Пнд Апр 26 16:19:51 CST 2021 Затраченное время: 137.374 (с)

### ! [Введите описание изображения](https://images.gitee.com/uploads/images/2021/0506/141413_8cb74d01_1205442.png "image-20210426162317243.png")

Элементы: 100000, Данные: 10 КБ, Тип: String Начало: Пнд Апр 26 16:23:47 CST 2021 Затраченное время: 275.583 (с)

### ! [Введите описание изображения](https://images.gitee.com/uploads/images/2021/0506/141426_0d7087a5_1205442.png "image-20210426163543639.png")

#### 2. Тест производительности чтения с использованием хешей, hscan()

Чтение элементов: 10000, Данные: 10 КБ, Тип: String Начало: Пн Апр 26 16:42:41 MSK 2021 Время выполнения: 8.567 (с)


Чтение элементов: 100000, Данные: 10 КБ, Тип: String Начало: Пн Апр 26 16:43:32 MSK 2021 Время выполнения: 85.449 (с)


#### Шесть. Скачивание

**Gitee**
- [сервер CentOS 7 64-бит](https://gitee.com/RocksCloud/rocksredis_centos7_x86_64)

**GitHub**
- [сервер CentOS 7 64-бит](https://github.com/RocksCloud/rocksredis_centos7_x86_64)

Другое
https://gitee.com/rockscloud
https://github.com/rockscloud

##### Семь. Группа для технического общения

Основной этап тестирования RocksRedis завершен. Программа широко используется на платформах Rocksiot IoT Cloud, управлении оборудованием и прогнозируемой поддержке. Приглашаем вас принять участие в техническом сотрудничестве и общении.

![Описание вставленного изображения](https://images.gitee.com/uploads/images/2021/0511/114648_5eee5a94_1205442.png "personal_wechat.png")

Комментарии ( 0 )

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

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/RocksCloud-rocksredis.git
git@api.gitlife.ru:oschina-mirror/RocksCloud-rocksredis.git
oschina-mirror
RocksCloud-rocksredis
RocksCloud-rocksredis
master