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

OSCHINA-MIRROR/0xsky-xhttpcache

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

Автор Платформа NoSQL Лицензия

Что такое xhttpcache? (Китайская версия)

Xhttpcache — это служба кэширования данных HTTP, которая также является NoSQL базой данных с поддержкой хранения данных в виде ключ-значение и протокола Redis, а также интерфейса REST HTTP.

Какие функции имеет xhttpcache?

  • Предоставление услуг кэширования данных HTTP и поддержка хранения двоичных данных;
  • Реализация полного хранения данных в виде ключ-значение и постоянного хранения данных (ROCKSDB);
  • Поддержка механизма истечения срока действия данных с точностью до миллисекунды;
  • Реализация полного интерфейса протокола Redis с командами SET/GET/DEL/EXPIRE/TTL;
  • Реализация интерфейсов протоколов HTTP/HTTPS и доступ через команды REST;
  • Реализация протоколов кэширования HTTP в поддержку eTag, Yöntem olmamış ve 304 Not Modified и сжатия gzip для передачи содержимого;
  • Добавление, изменение и удаление данных непосредственно с помощью веб-редактора.

Графическое представление xhttpcache

xhttpcache

Сборка и установка

Зависимости компилятора: Необходимо собрать и установить заранее

Сборка
```
wget --no-check-certificate https://github.com/0xsky/xhttpcache/archive/master.zip 
unzip master.zip 
cd xhttpcache-master 
make
```
Доступ через HTTP-интерфейс
В конфигурационном файле xhttpcache настроены два порта HTTP-сервиса. Port Httpd_frontend_port — это открытый порт для чтения с запросами только на чтение, в то время как Httpd_backend_port — это порты данных серверной части, поддерживающие все запросы REST (get/post/put/delete). Доступ к данным серверной части можно настроить, используя пароль входа.

###Примеры команд Redis:
Ниже приведён пример, демонстрирующий все поддерживаемые команды Redis
```bash
[xsky@localhost xhttpcache]$ redis-cli -p 7379
127.0.0.1:7379> set test hello 
OK
127.0.0.1:7379> get test
"hello"
127.0.0.1:7379> set test hello ex 1000
OK
127.0.0.1:7379> get test
"hello"
127.0.0.1:7379> ttl test
(integer) 988
127.0.0.1:7379> expire test 2000
(integer) 1
127.0.0.1:7379> ttl test
(integer) 1998
127.0.0.1:7379> get test
"hello"
127.0.0.1:7379>
```

###Добавление изображений в xhttpcache через команды Redis
```bash
redis-cli -p 7379 -x set getheadimg.jpg <getheadimg.jpg
```

###Импорт и экспорт больших объёмов данных
Экспортирование большого объёма файлов диска в xhttpcache осуществляется с помощью следующего скрипта, который перемещает файлы из указанной директории в xhttpcache.
```bash
#!/bin/bash

redis_cmd="redis-cli -p 7379 -x set "
function batch_convert() {
    for file in `ls $1`
    do
        if [ -d $1"/"$file ]
        then
            batch_convert $1"/"$file
        else
            key=$1"/"$file       
            #echo 33 $redis_cmd  ${key#*/}   $1"/"$file
            $redis_cmd ${key#*/} < $1"/"$file
        fi
    done
}
``````batch_convert $1
```
Данные в xhttpcache могут быть экспортированы на диск в виде файловой директории с помощью следующего скрипта shell,
```bash
#!/bin/sh
#
# Скрипт резервного копирования данных xHttpCache
# Автор: xSky
``````markdown
usage()
{
    echo "++++++++++++++++++++++++++++++++++++++++++++++++++++" 
    echo "+ Инструменты shell для экспорта данных xHttpCache   +" 
    echo "+ Автор: xSky                                         +" 
    echo "+ Использование:                                     +" 
    echo "+ $0 data_dir redis_host redis_port                   +" 
    echo "++++++++++++++++++++++++++++++++++++++++++++++++++++" 
}

# Проверка аргументов
if [ $# -ne 3 ]; then
    usage
    exit 0
fi

data_dir=$1
redis_host=$2
redis_port=$3
echo $data_dir $redis_host $redis_port

if [ ! -d $data_dir ]; then
    #redis-cli -p 6579 scan a z | awk  '{print "redis-cli -p 6579 get "$0 " >"$0}'|sh
    cd $data_dir
    redis-cli -h $redis_host -p $redis_port scan a z | while read line
    do
        echo $line 
        bdir=$(expr index $line "/")
        file_dir=${line%/*}
        file_name=$line

        if [[ $bdir -gt 0 ]]; then
            #echo 1 $bdir $file_dir $file_name
            mkdir -p $file_dir
        fi

        redis-cli -h $redis_host -p $redis_port get $line > $line

    done
    cd -
else
    echo "[ОШИБКА] папка $data_dir отсутствует"
    exit 0
fi
```

### Характеристическое описание:
xhttpcache может возвращать соответствующий тип файла `Content-Type`, определяя тип URI, посещаемого через HTTP. Это делает его HTTP-интерфейс настоящим веб-сервером. При доступе через браузер данные будут отображаться непосредственно в виде страницы вместо обычного интерфейса данных.
```Например: для адреса с формой `/test.htm`. При возврате содержимого HTTP-заголовок возвращает `text/html` `Content-Type`, что позволяет отобразить соответствующие данные `test.htm` в виде HTML через браузер. Для ключа в форме `/test.jpg`, если значение должно быть данными JPG-изображения, нормальное отображение как картинки происходит при доступе через браузер к `/test.jpg`. Кроме того, фоновая поддержка обеспечивает просмотр и загрузку изображений.По вышеуказанным характеристикам можно легко загружать все статические файлы веб-сайта в кэш с полной памятью.

### Заключение
Благодарность за следующие библиотеки и проекты. Оценка не имеет значения.
* [libevent](http://libevent.org/)
* [libevhtp](https://github.com/ellzey/libevhtp)
* [rocksdb](http://rocksdb.org/)
* [ssdb](http://ssdb.io/)

### Об авторе
* [сайт xhttpcache](http://xhttpcache.0xsky.com/)
* группа QQ xhttpcache: 195957781
* [блог xSky](http://www.0xsky.com/)
* Электронная почта: guozhw@gmail.com
```

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

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

Введение

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

Обновления

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

Участники

все

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

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