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

OSCHINA-MIRROR/jbakwd-ssdbj

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

SSDBJ — это драйвер, поддерживающий кластеры баз данных SSDB NoSQL.

Функции:

  1. Соединение с пулом баз данных ssdb.
  2. Поддержка master-slave кластеров для нескольких баз данных ssdb.
  3. Поддержка балансировки нагрузки внутри кластера, временно поддерживаются 4 метода (Random, round_robin, round_robin_weight, random_weight).
  4. Реализовано разделение чтения и записи.
  5. В случае получения not_found от slave, поддержка прямого повторного получения из master в кластере.
  6. Поддержка ситуации, когда ошибка возникает при чтении из slave до завершения синхронизации, попытка может быть сделана либо на slave, либо повторная попытка может быть предпринята на master. Количество попыток можно настроить в файле конфигурации.

Для более подробной информации обратитесь к файлу src/test/resource/ssdbj.xml.

SSDBJ предоставляет три способа использования:

  1. Прямое ручное создание соединения, см. файл src/test/java/SSDBJTest.java.
  2. Использование пула соединений для одной базы данных, см. файл src/test/java/SSDBPoolTest.java.
  3. Использование режима кластера, см. файл src/test/java/SSDBClusterTest.java.

Файл конфигурации для режима кластера можно найти в файле src/test/resource/ssdbj.xml.

Кто использует SSDBJ?

Пример использования Java для подключения к одной базе данных

public class SSDBJTest {
    /**
     * @param args
     * @throws Exception 
     */
    @SuppressWarnings({ "serial", "rawtypes", "unchecked" })
    public static void main(String[] args) throws Exception {
        SSDBDriver dd= new SSDBDriver();
        Properties info = new Properties();
        info.setProperty("user", "test");
        info.setProperty("password", "ddd");
        info.setProperty("loginTimeout", "300");
        info.setProperty("tcpKeepAlive", "true");
        info.setProperty("protocolName", "ssdb");
        info.setProperty("protocolVersion", "ddd");

        info.setProperty("SSDB_HOST", "192.168.0.226");
        info.setProperty("SSDB_PORT", "8888");
        SSDBConnection conn= dd.connect(info);
        ArrayList<byte[]> setparams=new ArrayList<byte[]>(){
            {
                add("joliny".getBytes());
                add("kkk".getBytes());
                add("是的发生地发生1231sdfsfg23".getBytes());
            }
        };
        conn.execute("hset",setparams);

        ArrayList params=new ArrayList();
        params.add("joliny".getBytes());
        params.add("kkk".getBytes());
        BaseResultSet<byte[]> rs=conn.execute("hget",params );
        System.out.println(new String(rs.getResult()));
    }
}

##Пример использования Java для создания пула подключений к одной базе данных

public class SSDBPoolTest {
    static SSDBDataSource ds=null; 
    static{
        Properties info = new Properties();
        info.setProperty("password", "ddd");
        info.setProperty("loginTimeout", "300");
        info.setProperty("tcpKeepAlive", "true");
        info.setProperty("protocolName", "ssdb");
        info.setProperty("protocolVersion", "1.0");
        ds = new SSDBDataSource("192.168.0.226",8888,null,info);
    }

    /**
     * @param args
     * @throws Exception 
     */
    @SuppressWarnings({  "rawtypes", "unchecked" })
    public static void main(String[] args) throws Exception {
        SSDBPoolConnection conn=null;
        for(int i=0;i<100000;i++){
            try{
                conn= ds.getConnection();
                ArrayList params=new ArrayList();
                params.add("joliny".getBytes());
                params.add("kkk".getBytes());
                BaseResultSet<byte[]> rs= conn.execute("hget",params );
                System.out.println(new String(rs.getResult()));

                
                ArrayList mset_params=new ArrayList();
                mset_params.add("a".getBytes());
                mset_params.add("aaaaa1".getBytes());
                mset_params.add("b".getBytes());
                mset_params.add("bbbbbb2".getBytes());
                conn.executeUpdate("multi_set", mset_params);
                
                ArrayList mget_params=new ArrayList();
                mget_params.add("a".getBytes());
                mget_params.add("b".getBytes());

                BaseResultSet<Map<byte[],byte[]>> m_rs= conn.execute("multi_get",mget_params );
                Map<byte[],byte[]> items=m_rs.getResult();
                Iterator<byte[]> ite=items.keySet().iterator();
                while(ite.hasNext()){
                    byte[] key=ite.next();
                    System.out.println(new String(key)+"====="+new String(items.get(key)));
                }
                
                ArrayList<byte[]>
``` ```
scan_params = new ArrayList();
scan_params.add("".getBytes());
scan_params.add("".getBytes());
scan_params.add("10".getBytes());
BaseResultSet<Map<byte[], byte[]>> scan_rs = conn.execute("scan", scan_params);
Map<byte[], byte[]> scan_items = scan_rs.getResult();
Iterator<byte[]> scan_ite = scan_items.keySet().iterator();
while (scan_ite.hasNext()) {
    byte[] key = scan_ite.next();
    System.out.println(new String(key) + "=====" + new String(scan_items.get(key)));
}

Тестирование нескольких кластеров баз данных на Java

public class SSDBClusterTest {

    /**
     * @param args
     * @throws Exception 
     */
    public static void main(String[] args) throws Exception {
        ArrayList params = new ArrayList();
        params.add("joliny");
        params.add("kkk");
        BaseResultSet<byte[]> rs = SSDBJ.execute("userinfo_cluster", SSDBCmd.HGET, params);
        System.out.println(new String(rs.getResult()));
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<ssdbj>
    <ssdb_node id="m_userinfo"   master="true"  host="192.168.0.226" port="8888"  user="" password="abcdefghijklmnopqrstuvwxyz1234567890" loginTimeout="3" tcpKeepAlive="true" protocolName="ssdb" 
        maxTotal="200" maxIdle="10" minIdle="5" testWhileIdle="true">
    </ssdb_node>
    <ssdb_node id="s_userinfo1"  master="false" host="192.168.0.226" port="8889"  user="" password="abcdefghijklmnopqrstuvwxyz1234567890" loginTimeout="3" tcpKeepAlive="true" protocolName="ssdb" 
        maxTotal="200" maxIdle="10" minIdle="5" testWhileIdle="true">
    </ssdb_node>
    <!-- 
    <ssdb_node id="s_userinfo2"  master="false" host="192.168.0.226" port="8890"  user="" password="abcdefghijklmnopqrstuvwxyz1234567890" loginTimeout="3" tcpKeepAlive="true" protocolName="ssdb">
    </ssdb_node> -->
    <clusters>
        <cluster id="userinfo_cluster" notfound_master_retry="true" error_retry_times="3" error_master_retry="true" retry_interval="500" balance="random_weight">
            <ssdb_node weight="1" rwMode="w">m_userinfo</ssdb_node>
            <ssdb_node weight="2" rwMode="r">s_userinfo1</ssdb_node>
            <!-- 
            <ssdb_node weight="3" rwMode="r">s_userinfo2</ssdb_node> 
            -->
        </cluster>
    </clusters>
</ssdbj>

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

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

Введение

Java-драйвер SSDB с функцией балансировки нагрузки. Развернуть Свернуть
Отмена

Обновления

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

Участники

все

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

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