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

OSCHINA-MIRROR/websterlu-redisx

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

RedisX

Что такое RedisX?

  1. Включает в себя почти все реализации пулов потоков Redis и способы их использования;
  2. Включает реализацию Master Slave для главного и резервного серверов;
  3. Включает разделение чтения и записи Redis;
  4. Включает пул потоков Sentinel;
  5. Включает пулы потоков Sentinel Slave;
  6. Добавлена поддержка Spring, идеально интегрированная с Spring;
  7. Включает пул потоков Sharded Master Slave Sentinel;
  8. Включает алгоритм сериализации и сжатия объектов Redis, такие как gz и lzma;
  9. Добавлен ehcache в качестве кэша первого уровня RedisX;
  10. Поддерживает совместное использование кэша ehcache на нескольких машинах.

Использование одного потока Redis

public class TestRedis {
    public static void main(String[] args) {
        for (int i = 0; i < 5000; i++) {
            new RedisThread("threadredis" + i).start();
        }
    }
}

class RedisThread extends Thread {
    private String name;

    public RedisThread() {
        // TODO Auto-generated constructor stub
    }

    public RedisThread(String name) {
        this.name = name;
    }

    @Override
    public void run() {
        try {
            for (int i = 0; i < 100; i++) {
                System.out.println(PowerfulRedisUtil.setString(this.name + "xxx" + i, "fdsfsdf" + i) + "=" + i + "="
                        + this.getName() + this.getId());

                sleep(200);
            }

            for (int i = 0; i < 50; i++) {
                System.out.println(PowerfulRedisUtil.del(this.name + "xxx" + i));
            }
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

SharedMasterSlaveSentinel

public class TestRedisUtils {
    public static String value = "2017年春运来得早,又赶上火车票预售期由60天调整至30天,购票期相对集中。对准备回家过年的人们而言,回家的火车票还好买吗?";

    public static void main(String[] args) throws InterruptedException {
        for (int i = 0; i < 500; i++) {
            new ThreadTest("treahd" + i).start();
        }      
}

class ThreadTest extends Thread {
    private String name;

    public ThreadTest() {
        super();
    }

    public ThreadTest(String name) {
        super();
        this.name = name;
    }

    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            String string = RedisSharedMasterSlaveSentinelUtil.setObject(name + i, TestRedisUtils.value + name + i);
            System.out.println(string + "=" + i);
        }

        for (int i = 0; i < 10; i++) {
            String value = RedisSharedMasterSlaveSentinelUtil.getObject(name + i, String.class);
            if (null != value) {
                System.out.println(value);
            }
            long l = RedisSharedMasterSlaveSentinelUtil.del(name + i);
            System.out.println(l + "=" + i);
        }
    }
}

RedisX Redis Cluster

public class TestRedisCluster {

    public static void main(String[] args) {
        for(int i=0;i<100;i++) {
            new RedisClusterThread("RedisClusterThread" + i,100).start();
        }
    }
}

class RedisClusterThread extends Thread {
    private String name;
    private int size;

    public RedisClusterThread() {
        // TODO Auto-generated constructor stub
    }

    public RedisClusterThread(String name,int size) {
        this.name = name;
        this.size = size;
    }

    @Override
    public void run() {
       // try {
            for (int i = 0; i < this.size; i++) {
                System.out.println(RedisClusterUtils.setString(this.name + "xxx" + i, "fdsfsdf" + i) + "=" + i + "="
                        + this.getName() + this.getId());

                //sleep(200);

            }

            for (int i = 0; i < this.size; i++) {
                System.out.println(RedisClusterUtils.del(this.name + "xxx" + i));

            }
       // } catch (InterruptedException e) {
            // TODO Auto-generated catch block
       //     e.printStackTrace();
      //  }
    }
}

Поддержка Spring В пакете cn.skynethome.redisx.spring предоставляется поддержка Spring. Для использования Master Slave с разделением чтения и записи в конфигурации Spring используется следующий код:

`

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ` Конфигурация Spring может напрямую настраивать пул потоков или указывать на файл конфигурации

JAVA Spring аннотация тестирования

@RunWith(SpringJUnit4ClassRunner.class) // Интеграция 
@ContextConfiguration(locations="classpath:applicationContext_masterslave.xml") // Загрузка конфигурации
public class SpringRedisXMasterSlaveTest {
    
    @Autowired
    private RedisXMasterSlave redisXMsterSlave;
    
    @Autowired
    private RedisXMasterSlave redisXMsterSlaveOfConfig;
    
    @Test
    public void TestRedisX() {
        String key = "key:_redisx_01_masterslave";
        
        // Добавление объекта
        String r_ = redisXMsterSlave.setObject(key, "12356465");
        System.out.println("Сохранено: " + r_);
        // Получение объекта
        String s = redisXMsterSlave.getObject(key, String.class);
        System.out.println("Данные из кэша: " + s);
        
        // Удаление объекта
        long d_ = redisXMsterSlaveOfConfig.del(key);
        System.out.println("Удалено: " + d_);
    }
}

Группа обмена сообщениями RedisX:

Изображение

Рекомендуется ознакомиться с открытыми проектами: zbus, talent-aio, nredis-proxy.

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

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

Введение

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

Обновления

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

Участники

все

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

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