티스토리 뷰

DataBase/Redis

[Redis] Jedis 설치 및 사용법

IT공부블로그 2019. 5. 28. 10:25
728x90
반응형

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 설정 바꾸기] redis-server로 일단 키고 redis-cli로 접속해서 아래 명령어를 사용해서 비밀번호를 적용한다.

단순하게 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;

 }

}


728x90
반응형

'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
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함