Sunday, March 15, 2015

Redis dan Java dengan framework Spring

Pada kali ini saya ingin menunjukan kolaborasi Redis dan Java dengan framework Spring dengan Maven sebagai dependency management-nya. Merujuk pada website redis.io/clients#java, saya menggunakan Jedis untuk berinteraksi dengan server Redis.

Jedis saya pilih karena sudah tersedia pada Maven public repository dan hampir semua Redis Command sudah didukung pada library ini.

Untuk mulai menggunakan Jedis, tambahkan dependency Jedis pada file pom.xml Maven.
<dependency>
   <groupid>redis.clients</groupid>
   <artifactid>jedis</artifactid>
   <version>2.6.2</version>
</dependency>

Kemudian tambahkan konfigurasi bean untuk object JedisPool pada Spring context.
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
   <property name="testOnBorrow" value="true" />
   <property name="testOnReturn" value="true" />
   <property name="testWhileIdle" value="true" />
   <property name="numTestsPerEvictionRun" value="10" />
   <property name="maxTotal" value="100"/>
</bean>
 
<bean id="redisConnectionPool" class="redis.clients.jedis.JedisPool" destroy-method="destroy">
   <constructor-arg index="0" ref="jedisPoolConfig" />
   <constructor-arg index="1" value="localhost" type="java.lang.String"/>
   <constructor-arg index="2" value="6379" type="int"/>
</bean>

Dan dengan memanfaatkan anotasi @Autowired pada Spring, object JedisPool bisa lansung dipakai untuk mengambil koneksi ke server Redis.
   @Autowired
   @Qualifier(value = "redisConnectionPool")
   JedisPool redisConnectionPool;


Berikut contoh pemanggilan perintah Redis RPUSH dengan menggunakan Jedis.
   public void rpush(String key, String value) {
      Jedis jedis = null;
      try {
         jedis = redisConnectionPool.getResource();    //ambil koneksi dari pool
         jedis.rpush(key, value);                      //RPUSH value ke list key
      } catch (JedisConnectionException jce) {
         jce.printStackTrace());
      } finally {
         if(null != jedis) {
            redisConnectionPool.returnResource(jedis); //kembalikan koneksi ke pool
         }
      }
   }


Sekian blog kali ini, saya senang apabila ada yang ingin berdiskusi lebih lanjut tentang Redis. Silahkan komen pada blog ini.

Semoga bermanfaat. :)

No comments:

Post a Comment