1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Стартап [ПЕРЕВОД] Использование Redis (Jedis)

Тема в разделе "Разработка плагинов для новичков", создана пользователем Dexel, 5 авг 2017.

  1. Автор темы
    Dexel

    Dexel Активный участник Пользователь

    Баллы:
    76
    Самая прямая в мире ссылка на оригинал (EN)

    Что такое Redis?
    Redis - это хранилище вида "ключ-значение", преимущественно основывающееся на словарях (но также поддерживает множество других типов данных). Идеально подходит для Scoreboard'ов, статистик, аккаунтов пользователей и т.д. BuildAPrefix - мой первый пример мощи Redis.

    Как его использовать?
    Здорово, что спросили! Я буду использовать Apache Maven для того, чтобы обрабатывать зависимости, но вы также можете просто добавить Jedis в ваш build-path. Хороший ресурс - страница на GitHub.

    Добавьте Jedis как зависимость. Это довольно просто. Вам также нужно добавить Apache Commons Pool2 для правильной работы Jedis.

    HTML:
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>2.8.1</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-pool2</artifactId>
        <version>2.4.2</version>
    </dependency>
    Затем внедрите код Jedis в проект. Это важно, потому что если вы не сделаете это, код будет недоступен во время выполнения, и вы будете получать ошибки.
    HTML:
    <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>2.1</version>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>shade</goal>
                            </goals>
                            <configuration>
                                <relocations>
                                    <relocation>
                                        <pattern>redis.clients.jedis</pattern>
                                        <shadedPattern>your.package.here.shaded.redis.clients.jedis</shadedPattern>
                                        <pattern>org.apache.commons</pattern>
                                        <shadedPattern>your.package.here.shaded.org.apache.commons</shadedPattern>
                                    </relocation>
                                </relocations>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    Теперь вам нужно инициализировать JedisPool в методе onEnable(). JedisPool - это потокобезопасный способ доступа к ресурсам Jedis.
    Код:
    private JedisPool pool;
    
    @Override
    public void onEnable() {
        /*
         * СПАСИБО @Tux за магию с ClassLoader.
         */
        ClassLoader previous = Thread.currentThread().getContextClassLoader();
        Thread.currentThread().setContextClassLoader(RedisDatabase.class.getClassLoader());
        pool = new JedisPool("ip", 123 /* Порт */);
        Thread.currentThread().setContextClassLoader(previous);
    }
    
    @Override
    public void onDisable() {
        pool.close();
    }
    Наконец, чтобы использовать Jedis, добавьте
    Код:
    // Try-with-resources будет обрабатывать для нас вызов #close()
    try (Jedis jedis = pool.getResource()) {
       // Если вы хотите использовать пароль, используйте
       jedis.auth("some-secure-password");
       jedis.set("key", "value");
       getLogger().info(jedis.get("key"));
    }
    На этом всё! Теперь вы используете Jedis.
     
  2. AxmeD

    AxmeD Старожил Пользователь

    Баллы:
    103
    Спасибо! Как раз заинтересовался этой штукой. Примеры использования было бы замечательно :)
     
  3. Автор темы
    Dexel

    Dexel Активный участник Пользователь

    Баллы:
    76
    Ознакомиться с функционалом Redis можно тут.
     
  4. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Тс опоздал лет так на 5, но да ладно. Тут в рашке все долго в берлоге спят.
     
  5. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
  6. FUZIK

    FUZIK Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    FUZIK
    появилось что-то лучшее?
     

Поделиться этой страницей