Skip to main content

Simple & featureful Redis on AWS - Elasticache Replication Group & MemoryDB with a unified API

Project description

cdk-redisdb

An AWS CDK construct which spins up an Elasticache Replication Group, or a MemoryDB Cluster.

Usage (TypeScript/JavaScript)

Install via npm:

$ npm i cdk-redisdb

Add an Elasticache Replication Group to your CDK stack:

import { RedisDB } from 'cdk-redisdb'

new RedisDB(this, 'redisdb-repl-group', {
  nodes: 1,
  nodeType: 'cache.m6g.large',
  engineVersion: '6.2',
})

Add a MemoryDB Cluster to your CDK stack:

import { MemoryDB } from 'cdk-redisdb'

new MemoryDB(this, 'memorydb-repl-group', {
  nodes: 1,
  nodeType: 'db.t4g.small',
  engineVersion: '6.2',
})

Specify a VPC rather than having a VPC auto-created for you:

import { MemoryDB } from 'cdk-redisdb'

let vpc = new ec2.Vpc(this, 'Vpc', {
  subnetConfiguration: [
    {
      cidrMask: 24,
      name: 'public1',
      subnetType: ec2.SubnetType.PUBLIC,
    },
    {
      cidrMask: 24,
      name: 'isolated1',
      subnetType: ec2.SubnetType.PRIVATE_ISOLATED,
    },
  ],
})

new RedisDB(this, 'redis-use-existing-vpc', {
  existingVpc: vpc,
})

Add 2 replicas per node, and add shards to cluster when memory exceeds 60%.

import { RedisDB } from 'cdk-redisdb'

new RedisDB(this, 'redisdb-repl-group', {
  nodes: 1,
  replicas: 2, // 2 replicas per node
  nodeType: 'cache.m6g.large',
  memoryAutoscalingTarget: 60,
  // nodesCpuAutoscalingTarget
})
import { RedisDB } from 'cdk-redisdb'

let vpc = new ec2.Vpc(this, 'Vpc', {
  subnetConfiguration: [
    {
      cidrMask: 24,
      name: 'public1',
      subnetType: ec2.SubnetType.PUBLIC,
    },
    {
      cidrMask: 24,
      name: 'isolated1',
      subnetType: ec2.SubnetType.PRIVATE,
    },
  ],
})

const ecSecurityGroup = new ec2.SecurityGroup(this, 'elasticache-sg', {
  vpc: vpc,
  description: 'SecurityGroup associated with the ElastiCache Redis Cluster',
  allowAllOutbound: false,
});

new RedisDB(this, 'redisdb-repl-group', {
  nodes: 1,
  nodeType: 'cache.m6g.large',
  nodesCpuAutoscalingTarget: 50,
  existingVpc: vpc,
  existingSecurityGroup: ecSecurityGroup,
})

Features in progress:

  • MemoryDB ACLs (commented out to avoid default bad practices, read comments to understand the CloudFormation)

Features to come:

  • Replication Groups with cluster mode disabled (for those using multiple databases)
  • Improved API - sane choice of props

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cdk-redisdb-0.0.38.tar.gz (41.3 kB view details)

Uploaded Source

Built Distribution

cdk_redisdb-0.0.38-py3-none-any.whl (39.5 kB view details)

Uploaded Python 3

File details

Details for the file cdk-redisdb-0.0.38.tar.gz.

File metadata

  • Download URL: cdk-redisdb-0.0.38.tar.gz
  • Upload date:
  • Size: 41.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for cdk-redisdb-0.0.38.tar.gz
Algorithm Hash digest
SHA256 9ad4f72c8c428033349ce6d55bbc57cfa773aad6edc42d76224b69afbab7eec0
MD5 9df97e64dd554716bcff42167ac05cfd
BLAKE2b-256 a2109fd85b66c6b77b66344c925757fc927e66fff8b843a0038e540a72ec780c

See more details on using hashes here.

File details

Details for the file cdk_redisdb-0.0.38-py3-none-any.whl.

File metadata

  • Download URL: cdk_redisdb-0.0.38-py3-none-any.whl
  • Upload date:
  • Size: 39.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for cdk_redisdb-0.0.38-py3-none-any.whl
Algorithm Hash digest
SHA256 2eba274d64d10b79871c47ca8593a39b4d6be0fc89ff9d69c1dd8aecc3b95eaa
MD5 c7a4e0564b9d1d816b4f8a11682ad67c
BLAKE2b-256 6c013f5691dae7136577a38971fd2022cc91ba2f495e899cc60d316d89059950

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page