Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

Dexel

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
SiRiuS_OSiRiuS
Самая прямая в мире ссылка на оригинал (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.
Java:
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, добавьте
Java:
// Try-with-resources будет обрабатывать для нас вызов #close()
try (Jedis jedis = pool.getResource()) {
   // Если вы хотите использовать пароль, используйте
   jedis.auth("some-secure-password");
   jedis.set("key", "value");
   getLogger().info(jedis.get("key"));
}
На этом всё! Теперь вы используете Jedis.
 
Спасибо! Как раз заинтересовался этой штукой. Примеры использования было бы замечательно :)
 
Тс опоздал лет так на 5, но да ладно. Тут в рашке все долго в берлоге спят.
 

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

Назад
Верх