大げさなタイトルですが。。。
メモリ上のDBともいえるRedisですが、
なかなか日本語の説明ってありませんね。
ちょっと試行錯誤しながら動作確認してみました。
jedis-2.2.1.jarを使います。
jedisのメソッドは基本的にRedisのコマンドと同じです。
RedisのなかにはString型だけでなくByte[]とかも入れることができるので、
一時対比データ、処理待ちなどに使うには便利です。
以下JAVAソース
//RedisPoolを宣言
JedisPool jedisPool;//Poolの設定
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxActive(-1);
jedisPoolConfig.setMaxIdle(500);
jedisPoolConfig.setMaxWait(-1);
jedisPoolConfig.setMinEvictableIdleTimeMillis(1800000);
jedisPoolConfig.setMinIdle(0);
jedisPoolConfig.setNumTestsPerEvictionRun(3);
jedisPoolConfig.setSoftMinEvictableIdleTimeMillis(1800000);
jedisPoolConfig.setTestOnBorrow(false);
jedisPoolConfig.setTestOnReturn(false);
jedisPoolConfig.setTestWhileIdle(false);
jedisPoolConfig.setTimeBetweenEvictionRunsMillis(-1);
jedisPoolConfig.setWhenExhaustedAction*1;
//値の取得(何度でも取得できる)
jedis.get(key);
//キーの削除(たぶん複数可能)
jedis.del(key);
//リストを一件セット(全部で3件)
jedis.rpush(key, "abcd");//lindex abcdefg 0
jedis.rpush(key, "efgh");//lindex abcdefg 1
jedis.rpush(key, "ijkl");//lindex abcdefg 2
//lpushリストの先頭に追加
//rpushリストの末尾に追加
//リスト長さの取得
jedis.llen(key); //llen abcdefg
//リストから一件ゲット(ゲットすると取得したデータが削除されます)
jedis.lpop(key);// lpop key
//lpopリストの先頭から取得
//rpopリストの末尾から取得
//キーの曖昧検索
Setkeys = jedis.keys("abc*"); //keys abc*
//取得したJedisオブジェクトPoolに返却
jedisPool.returnResource(jedis);
注意点はsetしたデータはgetで取得すること
例えばsetしたデータをlpopで取得しようとすると
WRONGTYPE Operation against a key holding the wrong kind of value
のエラーになる。
逆も同じでリスト型で入れたデータはリスト型のメソッドで取得しないとエラーになります。
rpush(lpush)で追加したデータはlpop(rpop)で取得
もう一つ、setを使った後、同じキーでrpushをしても問題ありません。
その場合は最後に入れたrpushの値が保持されるので
当然ですが、getするとやはりエラーになります。
関連エントリ
*1:byte) 1); //Poolオブジェクトの作成 jedisPool = new JedisPool(jedisPoolConfig, "192.168.1.1", 6379, 20000); //PoolからJedisオブジェクトを取得 Jedis jedis = jedisPool.getResource(); //値のセット String key ="abcdefg"; String value ="1234567890"; //普通にセット jedis.set(key, value); //時間(seconds)を指定してセット jedis.setex(key, 1, value); //バイト配列でセット jedis.set(SafeEncoder.encode(key), SafeEncoder.encode(key