티스토리 뷰
Jedis
java에서 Redis를 사용할수있도록 도와주는 라이브러리
설치
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
위 내용을 복사하여 pom.xml에 붙어넣는다
최신버전을 다운받아 사용하여도 된다
Redis-server Settings
~/redis-stable/redis.conf" 파일을 열어서 바꿀 부분 3가지
1. bind 192.168.0.56
- 127.0.0.1 로 되어있을텐데 원격에서 접속해서 쓸 거라 변경했다. 테스트니까 주석처리하면 모든 ip에서 접근가능
보안상 취약하니 실제 운영을 한다면 권장 x
2. protected-mode no
- protected-mode yes 로 되어있을텐데 이것을 no로 바꿔준다.
3. requirepass password
- #requirepass foobared 로 되어있을텐데 이것을 원하는 비밀번호로 바꾸고 앞에 주석을 제거한다.
비밀번호 없이 사용할 것이라면 그냥 주석된 처리로 써도 된다.
단순하게 redis-server가 띄워진 상태에서 redis-cli를 실행한 후 "config set requirepass [비밀번호]"를 입력하면 된다.
Jedis example
package jeongpro;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class jedistest {
public static void main(String[] args) {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
JedisPool pool = new JedisPool(jedisPoolConfig, "183.99.32.228", 6379, 1000, "jeongpro");
//Jedis풀 생성(JedisPoolConfig, host, port, timeout, password)
Jedis jedis = pool.getResource();//thread, db pool처럼 필요할 때마다 getResource()로 받아서 쓰고 다 쓰면 close로 닫아야 한다.
//데이터 입력
jedis.set("jeong", "pro");
//데이터 출력
System.out.println(jedis.get("jeong"));//pro
//데이터 삭제
jedis.del("jeong");
System.out.println(jedis.get("jeong"));//null
try {
jedis.set("key", "value");
//데이터 만료시간 지정
jedis.expire("key", 5);//5초 동안만 "key"를 key로 갖는 데이터 유지
Thread.sleep(4000);//쓰레드를 4초간 재우고
System.out.println(jedis.get("key"));//value
Thread.sleep(2000);//1초했더니 운좋으면 살아있어서 2초로 지정
System.out.println(jedis.get("key"));//null
}catch (Exception e) {
e.printStackTrace();
}
/* Lists 형태 입출력 */
jedis.lpush("/home/jdk", "firstTask");
jedis.lpush("/home/jdk", "secondTask");
System.out.println(jedis.rpop("/home/jdk"));//firstTask
System.out.println(jedis.rpop("/home/jdk"));//secondTask
/* Sets 형태 입출력 */
jedis.sadd("nicknames", "jeongpro");
jedis.sadd("nicknames", "jdk");
jedis.sadd("nicknames", "jeongpro");
Set<String> nickname = jedis.smembers("nicknames");
Iterator iter = nickname.iterator();
while(iter.hasNext()) {
System.out.println(iter.next());
}
/* Hashes 형태 입출력 */
jedis.hset("user", "name", "jeongpro");
jedis.hset("user", "job", "software engineer");
jedis.hset("user", "hobby", "coding");
System.out.println(jedis.hget("user","name"));//jeongpro
Map<String, String> fields = jedis.hgetAll("user");
System.out.println(fields.get("job"));//software engineer
/* Sorted Sets 형태 입출력 */
//Map을 미리 만들어서 넣을 수도 있음 zadd확인할 것
jedis.zadd("scores", 6379.0, "PlayerOne");
jedis.zadd("scores", 8000.0, "PlayerTwo");
jedis.zadd("scores", 1200.5, "PlayerThree");
System.out.println(jedis.zrangeByScore("scores", 0, 10000));
//[PlayerThree, PlayerOne, PlayerTwo]
//Sorted Sets는 잘모르겠으니 더 공부할 것.
if(jedis != null) {
jedis.close();
}
pool.close();
}
}
Jedis 설정 ( Spring & Redis 연동시 사용)
@Configuration
public class RedisConfig {
@Bean
public JedisConnectionFactory jedisConnectionFactory() {
JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory();
jedisConnectionFactory.setHostName("ip주소");
jedisConnectionFactory.setPort(6379);
jedisConnectionFactory.setTimeout(0);
jedisConnectionFactory.setUsePool(true);
return jedisConnectionFactory;
}
@Bean
public StringRedisTemplate redisTemplate() {
StringRedisTemplate redisTemplate = new StringRedisTemplate();
redisTemplate.setConnectionFactory(jedisConnectionFactory());
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new StringRedisSerializer());
return redisTemplate;
}
}
'DataBase > Redis' 카테고리의 다른 글
[Redis] Redis 명령어 (0) | 2019.05.28 |
---|---|
[Redis] Redis를 이용한 검색 자동완성 (0) | 2019.05.28 |
[Redis] Spring & Redis 연동 (0) | 2019.05.28 |
[Redis] Redis-Server 시작 (0) | 2019.05.28 |
[Redis] Redis 설치 (0) | 2019.05.28 |