JAVA

Spring boot - Redis 연동 및 Ec2 환경 구축.

곰탁 2022. 4. 20. 11:20

버전에 맞는 Redis 추가.

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    <version>2.4.10</version>
</dependency>

 

Local 환경에  window용 맥용 Redis 설치 후 돌아가는지 테스트

power shell : netstat -an | findstr 6379

 

## Redis
##
#ec2 Host
#spring.redis.host=*.**.*.* 
##
spring.redis.host=localhost
spring.redis.port=6379

 

 

설정

 

@RequiredArgsConstructor
@Configuration
@EnableRedisRepositories
public class RedisRepositoryConfig {

    @Value("${spring.redis.host}")
    private String redisHost;

    @Value("${spring.redis.port}")
    private int redisPort;

    // lettuce
    @Bean
    public RedisConnectionFactory redisConnectionFactory() {
        return new LettuceConnectionFactory(redisHost, redisPort);
    }

    @Bean
    public RedisTemplate<String, Object> redisTemplate() {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory());
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new StringRedisSerializer());
        return redisTemplate;
    }
}

 

public interface PersonRedisRepository extends CrudRepository<Person, String> {

}
@Getter
@RedisHash(value="people", timeToLive = 30)
public class Person {

    @Id
    private String id;
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

 

@RestController
@RequestMapping("/redis/test")
public class PersonRedisController {

    @Autowired
    private PersonRedisRepository personRedisRepository;

    @GetMapping
    public Iterable<Person> getPerson(){
        return personRedisRepository.findAll();
    }

    @PostMapping
    public Person create(@RequestBody Person person){
        System.out.println(person.getName());
        System.out.println(person.getAge());
        return personRedisRepository.save(person);
    }

}
@SpringBootTest
public class RedisRepositoryTest {

    @Autowired
    private PersonRedisRepository personRedisRepository;

    @Test
    void test(){

        Person person = new Person("Park",20);
        System.out.print("save >> ");
        System.out.println(personRedisRepository.save(person));
        System.out.println("Person Id is : "+ person.getId());
        System.out.print("find Id >> ");
        System.out.println(personRedisRepository.findById(person.getId()));
        System.out.print("get Count >> ");
        System.out.println(personRedisRepository.count());
        System.out.println("delete >> ");
        personRedisRepository.delete(person);
        System.out.print("find Id >>");
        System.out.println(personRedisRepository.findById(person.getId()));
        System.out.print("get Count >>");
        System.out.println(personRedisRepository.count());

    }
}

 

Ec2에서 환경구축은 보안포트 오픈과 conf 수정이라고 볼 수 있겠다.

 

설치폴더/redis.conf 를 수정하면 가능.

비밀번호, 메모리, 접속IP등 기능 수정부분 여기서 설정.

접속 가능한 ip 주소는 bind 옵션으로 설정 가능합니다.

127.0.0.1 ::1 부분을 0.0.0.0으로 변경하면 됩니다. 


설치폴더에서 

src/redis-server ./redis.conf 로 실행

 

 

 

https://wookgu.tistory.com/26

 

[Redis] AWS EC2에 redis-server setup 하기

이번 글에서는 AWS EC2에 외부에서 접속 가능한 redis-server를 setup 하는 과정을 정리해보겠습니다. EC2 인스턴스 생성 우선, redis-server를 설치할 EC2 인스턴스를 만듭니다. 저는 jony라는 이름의 ubuntu 18.

wookgu.tistory.com