Momento–The best Redis alternative for caching and messaging.

Stop spending your time managing clusters, migrate from Redis to Momento today.

Momento Advantages

icon representing fully serverless

Truly Serverless

With Momento Cache and Topics, you don't have to pay for overprovisioned instances, manage nodes within clusters, deal with scaling hassles, or put up with any maintenance windows.
icon of a side cache diagram

Drop-in Redis
Replacement Clients

Minimum updates to your existing codebase, but enhancements if you switch to native SDKS.
icon representing reduced costs

Cost-efficiency

Momento will save you time, money, and complexity. The pay-per-use model allows you to build a production grade chat app for a few dollars–and that's if you don't fit in our generous free tier.

Switching from Redis to Momento

When you opt for Momento, you create a cache with the console or API, and you're ready to read and write data. This instantaneous setup allows you to focus on the application logic rather than spending time on managing infrastructure. To further ease the transition to Momento, we provide drop-in replacement clients for Redis. This means you can swap Redis with Momento with minimal changes to your codebase.

// Import the Momento redis compatibility client.
import {createClient, momento} from 'momento-redis-client';
import {
    CacheClient,
    Configurations,
    CredentialProvider,
} from '@gomomento/sdk';

// Initialize Momento's client.
const redisClient = createClient(
    new momento.CacheClient({
        configuration: momento.Configurations.Laptop.v1(),
        credentialProvider: momento.CredentialProvider.fromEnvironmentVariable({
            environmentVariableName: 'MOMENTO_AUTH_TOKEN',
        }),
        defaultTtlSeconds: 60,
    }),
    'cache_name',
);

// Import the Momento redis compatibility client.
import {MomentoRedisAdapter} from '@gomomento-poc/node-ioredis-client';
import {
    CacheClient,
    Configurations,
    CredentialProvider,
} from '@gomomento/sdk';

// Instantiate Momento Adapter Directly
const Redis = new MomentoRedisAdapter(
    new CacheClient({
        configuration: Configurations.Laptop.v1(),
        credentialProvider: CredentialProvider.fromEnvironmentVariable({
            environmentVariableName: authTokenEnvVarName,
        }),
        defaultTtlSeconds: config.defaultTTLSeconds,
    }),
    'cache_name',
);

using System;
using Momento.Auth;
using Momento.Config;
using Momento.Sdk;
using Momento.StackExchange.Redis;

// Create a Momento-backed Redis client
var db = MomentoRedisDatabase(
  new CacheClient(
    config: Configurations.Laptop.v1(),
    authProvider: new EnvMomentoTokenProvider("MOMENTO_AUTH_TOKEN"),
    defaultTtl: TimeSpan.FromSeconds(60),
  }),
  "cache_name"
);

package redis

import (
	"context"
	"github.com/momentohq/client-sdk-go/auth"
	"github.com/momentohq/client-sdk-go/config"
	"github.com/momentohq/client-sdk-go/momento"
	momentoredis "github.com/momentohq/momento-go-redis-client/momento-redis"
	"github.com/redis/go-redis/v9"
	"time"
)

func initRedisClient() redis.Cmdable {
	credential, eErr := auth.NewEnvMomentoTokenProvider("MOMENTO_AUTH_TOKEN")
	if eErr != nil {
		panic("Failed to initialize credentials through auth token " + eErr.Error())
	}
	cacheClient, cErr := momento.NewCacheClient(config.LaptopLatest(), credential, 60*time.Second)
	if cErr != nil {
		panic("Failed to initialize Momento cache client " + cErr.Error())
	}
	// create cache; it resumes execution normally incase the cache already exists
	_, createErr := cacheClient.CreateCache(context.Background(), 
		                &momento.CreateCacheRequest{CacheName: "default_cache"})
	if createErr != nil {
		panic("Failed to create cache with cache name default cache \n" + createErr.Error())
	}
	redisClient := momentoredis.NewMomentoRedisClient(cacheClient, "default_cache")
	return redisClient
}

import datetime
# Import the Momento redis compatibility client.
import momento
from momento_redis import MomentoRedis

# Initialize Momento client.
redis_client = MomentoRedis(
    momento.CacheClient.create(
        momento.Configurations.Laptop.latest(),
        momento.CredentialProvider.from_environment_variable("MOMENTO_AUTH_TOKEN"),
        datetime.timedelta(seconds=60)
    ),
    "cache_name"
)
How to upgrade from Redis to Momento Cache
View our showcase of Redis compatibility clients and get a walk through how they make it easy to use Momento Cache as a drop-in replacement for Redis with zero changes to your application code.

Examples of dropping Momento into your Redis App

Momento provides drop-in integrations for many other popular tools and frameworks as well. Below are a few examples, and we are adding more every day! Please let us know if you have a favorite framework that you would like to see Momento support!
Spring Boot Official Logo
Spring Boot integrations for read-aside caching of databases
Laravel Official Logo
PHP Laravel web
framework caching
JavaScript Official Logo
JavaScript DynamoDB middleware