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

OSCHINA-MIRROR/tompeppa-group-cache

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

group-cache

Простая реализация кеша с понятием группы. Группа представляет собой упорядоченный набор пар ключ-значение, поддерживающий истечение срока действия ключей, что компенсирует недостатки redis list.

Всего три класса:

GroupCacheFactory — фабрика для получения объекта Group
Group — группа, содержащая несколько пар ключ-значение
CacheEntity — сущность кэша, все данные кэширования хранятся в виде объектов CacheEntity внутри групп

Официальный сайт http://www.qikenet.com

Пример тестового кода:

package com.qikenet.cache;

import java.util.Random;

public class CacheTest {
public static void main(String[] args) {
    /**
     * Концепция:
     * Групповой кэш, в традиционных Redis и Memcached кэшированных контейнерах все ключи имеют вид key-value.
     * Групповой кэш представляет собой добавление метки на внешнем уровне ключа-значения.
     * Для сравнения с использованием списка, структура списка в Redis выглядит следующим образом, и отдельные элементы списка не могут иметь временные метки:
     *     abc
     *         1
     *         2
     *         3
     *
     * В структуре GroupCache это выглядит так:
     * abc
     *      a 1 10
     *      b 2 5
     *      c 3 1
     * Первая строка: a — это ключ, 1 — значение, 10 — время жизни в секундах, то есть 10 секунд.
     */
}

}

        GroupCacheFactory factory = new GroupCacheFactory();
        // Получение группы
        Group group1 = factory.group("group1");
        group1.push("a", 123); // По умолчанию имеет бесконечное время жизни
        group1.push("b", 321, 10); // Время жизни составляет 10 секунд        // Проверка времени до истечения срока действия
        System.out.println("Оставшееся время жизни элемента 'b' в группе 1: " + group1.ttl("b"));

        // Проверка наличия значения
        System.out.println("Существует ли 'a': " + group1.exist("a"));
        System.out.println("Существует ли 'c': " + group1.exist("c"));

        // Получение действительных ключей
        System.out.println("Ключи группы 1: " + group1.getKeys());

        // Получение действительных значений
        System.out.println("Значения группы 1: " + group1.getValues());

        // Получение значения по ключу
        System.out.println("Получение значения по ключу 'a': " + group1.getValue("a"));


        // Получение группы с установленной емкостью в 100, по умолчанию емкость равна 1000, данные между различными группами не совместимы
        Group group2 = factory.group("group2", 100);

        // Если количество данных больше, чем емкость, старые данные будут удалены
        for (int i = 0; i < 101; i++) {
            group2.push(String.valueOf(i), i, new Random().nextInt(10));
        }
        // Получение количества живых элементов
        System.out.println("Размер группы 2: " + group2.size());

        // Установка времени жизни элемента
        group2.expire("2", 100);

        // Удаление элемента
        group2.delete("3");
        System.out.println("Размер группы после удаления элемента: " + group2.size());

        // Получение размера группы
        System.out.println("Емкость группы 2: " + group2.getCapacity());

        System.out.println(group2.getKeys());

    }
}

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

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

Введение

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

Обновления

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

Участники

все

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

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