티스토리 뷰

redis를 사용하면서 필요에 의해 CONFIG SET을 통해 설정을 변경하는 경우가 있습니다. 아마 처음 config set을 검색했을 때 목적은 notify-keyspace-events 변경을 통해 key expire에 대한 이벤트를 받기 위해서가 많을 듯합니다. notify-keyspace-events 변경은 아래 페이지에 자세히 설명되어 있습니다.
https://redis.io/topics/notifications

 

Redis Keyspace Notifications – Redis

*Redis Keyspace Notifications IMPORTANT Keyspace notifications is a feature available since 2.8.0 *Feature overview Keyspace notifications allow clients to subscribe to Pub/Sub channels in order to receive events affecting the Redis data set in some way. E

redis.io

 

그런데 AWS에서 ElastiCache를 통해 제공되는 Redis는 redis cli에서 설정 변경이 불가능합니다. 대신 AWS 콘솔을 통해 변경해야 할 수 있습니다. AWS 상에서는 Parameter Group이라는 이름으로 설정을 저장해놓고 사용하게 됩니다. 여러분의 Redis에 설정된 Parameter Group을 아래처럼 확인해보세요.

Redis 클러스터에 Parameter Group 확인 

 

이제 notify-keyspace-events 설정을 변경하려면 default.redis5.0을 찾아가서 변경해주면 될 것 같지만 그렇지 않습니다. AWS에서 제공하는 default는 수정이 불가능하거든요. 그렇기 때문에 사용자가 Parameter Group을 생성하고 Redis Cluster에 지정해줘야 합니다.

Parameter Group 생성

 

생성이 끝났으면 필요한 옵션을 아래처럼 찾아서 수정해주면 됩니다. 

Parameter Group에 옵션 수정

 

그리고 마지막으로 생성한 Parameter Group을 Redis에 연결시켜주면 끝입니다. 이 과정은 Redis Cluster의 재부팅 없이 적용됩니다. 그런데 parameter group을 생성할 때부터 설정을 수정하거나 지정할 수 있게 해 뒀으면 어땠을까 하는 생각이 드네요. 조금 불편한 듯. 테라폼의 경우 아래와 같이 리소스를 정의해서 사용할 수 있습니다.

resource "aws_elasticache_parameter_group" "default" {
  name    = "cache-params"
  family  = "redis5.0"

  parameter {
    name  = "notify-keyspace-events"
    value = "Ex"
  }
}

resource "aws_elasticache_cluster" "main" {
  cluster_id               = var.name
  tags                     = var.tags
  engine                   = "redis"
  node_type                = var.node_type
  num_cache_nodes          = 1
  parameter_group_name     = aws_elasticache_parameter_group.default.name
  engine_version           = "5.0.6"
  port                     = 6379
  security_group_ids       = var.security_group_ids
  subnet_group_name        = var.subnet_group_name
  availability_zone        = var.availability_zone
  snapshot_retention_limit = 1
}

 

간단한 내용이지만 누군가에게는 도움이 되셨기를 바랍니다 :) 

댓글
댓글쓰기 폼