Skip Navigation
Show nav
Dev Center
  • Get Started
  • ドキュメント
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
    • .NET
  • ドキュメント
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log inorSign up
View categories

Categories

  • Heroku のアーキテクチャ
    • Dyno (アプリコンテナ)
      • Dyno Management
      • Dyno Concepts
      • Dyno Behavior
      • Dyno Reference
      • Dyno Troubleshooting
    • スタック (オペレーティングシステムイメージ)
    • ネットワーキングと DNS
    • プラットフォームポリシー
    • プラットフォームの原則
  • Developer Tools
    • コマンドライン
    • Heroku VS Code Extension
  • デプロイ
    • Git を使用したデプロイ
    • Docker によるデプロイ
    • デプロイ統合
  • 継続的デリバリーとインテグレーション
    • 継続的統合
  • 言語サポート
    • Node.js
      • Working with Node.js
      • Node.js Behavior in Heroku
      • Troubleshooting Node.js Apps
    • Ruby
      • Rails のサポート
      • Bundler の使用
      • Working with Ruby
      • Ruby Behavior in Heroku
      • Troubleshooting Ruby Apps
    • Python
      • Working with Python
      • Python でのバックグランドジョブ
      • Python Behavior in Heroku
      • Django の使用
    • Java
      • Java Behavior in Heroku
      • Working with Java
      • Maven の使用
      • Spring Boot の使用
      • Troubleshooting Java Apps
    • PHP
      • PHP Behavior in Heroku
      • Working with PHP
    • Go
      • Go の依存関係管理
    • Scala
    • Clojure
    • .NET
      • Working with .NET
  • データベースとデータ管理
    • Heroku Postgres
      • Postgres の基礎
      • Postgres スターターガイド
      • Postgres のパフォーマンス
      • Postgres のデータ転送と保持
      • Postgres の可用性
      • Postgres の特別なトピック
      • Migrating to Heroku Postgres
    • Heroku Data For Redis
    • Apache Kafka on Heroku
    • その他のデータストア
  • AI
    • Working with AI
    • Heroku Inference
      • Inference API
      • Quick Start Guides
      • AI Models
      • Inference Essentials
    • Vector Database
    • Model Context Protocol
  • モニタリングとメトリクス
    • ログ記録
  • アプリのパフォーマンス
  • アドオン
    • すべてのアドオン
  • 共同作業
  • セキュリティ
    • アプリのセキュリティ
    • ID と認証
      • シングルサインオン (SSO)
    • Private Space
      • インフラストラクチャネットワーキング
    • コンプライアンス
  • Heroku Enterprise
    • Enterprise Accounts
    • Enterprise Team
    • Heroku Connect (Salesforce 同期)
      • Heroku Connect の管理
      • Heroku Connect のリファレンス
      • Heroku Connect のトラブルシューティング
  • パターンとベストプラクティス
  • Heroku の拡張
    • Platform API
    • アプリの Webhook
    • Heroku Labs
    • アドオンのビルド
      • アドオン開発のタスク
      • アドオン API
      • アドオンのガイドラインと要件
    • CLI プラグインのビルド
    • 開発ビルドパック
    • Dev Center
  • アカウントと請求
  • トラブルシューティングとサポート
  • Salesforce とのインテグレーション
  • データベースとデータ管理
  • Heroku Data For Redis
  • Heroku Data for Redis への接続

Heroku Data for Redis への接続

日本語 — Switch to English

この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。

最終更新日 2024年04月30日(火)

Table of Contents

  • 接続のアクセス許可
  • 外部接続
  • Java での接続
  • Ruby での接続
  • Python での接続
  • Node.js での接続
  • PHP での接続
  • Go での接続

Heroku Data for Redis には、Heroku によってサポートされているすべての言語およびフレームワークを含むすべての言語から、Redis ドライバーでアクセスできます。また、独自の環境で実行されているクライアントから、Mini プランまたは Premium プランでホストされている Heroku Data for Redis にアクセスすることもできます。

接続のアクセス許可

すべての Heroku Data for Redis ユーザーに、Redis 内のすべてのコマンド​ (CONFIG​、SHUTDOWN​、BGREWRITEAOF​、BGSAVE​、SAVE​、MOVE​、MODULE​、MIGRATE​、SLAVEOF​、REPLICAOF​、ACL​、DEBUG​ を除く) へのアクセス許可が付与されます。

外部接続

Heroku ランタイムから使用できることに加えて、Heroku Data for Redis の Mini プランと Premium プランのインスタンスには、ローカルコンピューターやその他の場所で実行されているクライアントからアクセスできます。

Premium、Private、Shield の各プランでは、Heroku Data for Redis バージョン 6.0 以降に TLS 接続が必要​です。TLS をサポートするようにクライアントを設定する​必要があります。このプロセスでは、アプリを通常の動作に戻す​前にアプリケーションを更新およびデプロイする必要がある場合があります。 Mini プランでは TLS の使用はオプションですが、REDIS_TLS_URL​ 環境設定の使用を通じて推奨されています。

外部システムまたはクライアントから接続するには、次のいずれかの方法を使用して Redis 接続文字列を取得します。

  • heroku redis:credentials​ CLI コマンドを実行する (詳細は、「redis:credentials)​」を参照)。
  • コマンド heroku config:get REDIS_URL -a example-app​ を実行して、アプリの環境設定を検査する

Heroku Data for Redis の本番プランでは、REDIS_URL​ のみ使用できます。Heroku Data for Redis の Mini プランでは、REDIS_URL​ および REDIS_TLS_URL​ の両方が TLS 以外の接続と TLS 接続で使用できます。Heroku Data for Redis の Mini プランを使用している場合、REDIS_TLS_URL​ を使用して、TLS 接続経由で Redis アドオンに接続します。

 

Heroku Data for Redis では、Redis クライアントの verify_mode​ SSL 設定を設定するように要求できる自己署名証明書を使用しています。

 

REDIS_URL​ および REDIS_TLS_URL​ 環境設定は、いつでも変化する可能性があります。Heroku アプリ外の環境設定に依存していて、それが変化した場合は、値の再コピーが必要になります。

Java での接続

Heroku Data for Redis の Mini アドオンを使用している場合、REDIS_URL​ の代わりに REDIS_TLS_URL​ を使用して、TLS 接続経由で Redis アドオンに接続します。

Heroku Data for Redis に接続するにはさまざまな方法がありますが、個々の方法は使用中の Java フレームワークに依存します。すべての接続方法では REDIS_URL​ 環境変数を使用して接続情報を調べます。

Spring Boot

Spring Boot の Redis に対するサポートでは、REDIS_URL​ などのすべての Redis 設定が自動的に選択されます。TLS ピアの確認を無効にするには、LettuceClientConfigurationBuilderCustomizer​ Bean を定義します。

@Configuration
class AppConfig {

    @Bean
    public LettuceClientConfigurationBuilderCustomizer lettuceClientConfigurationBuilderCustomizer() {
        return clientConfigurationBuilder -> {
            if (clientConfigurationBuilder.build().isUseSsl()) {
                clientConfigurationBuilder.useSsl().disablePeerVerification();
            }
        };
    }
}

Lettuce

このスニペットでは、REDIS_URL​ 環境変数を使用して、Lettuce​ を経由した Redis への接続を作成します。StatefulRedisConnection​はスレッドセーフであるため、マルチスレッド環境で安全に使用できます。

 public static StatefulRedisConnection<String, String> connect() {
    RedisURI redisURI = RedisURI.create(System.getenv("REDIS_URL"));
    redisURI.setVerifyPeer(false);

    RedisClient redisClient = RedisClient.create(redisURI);
    return redisClient.connect();
}

Jedis

このスニペットでは、REDIS_URL​ 環境変数を使用して URI を作成します。この新しい URI は、Jedis​ を経由した Redis への接続を作成するために使用されます。この例では、Redis への 1 つの接続を作成します。

private static Jedis getConnection() {
    try {
        TrustManager bogusTrustManager = new X509TrustManager() {
            public X509Certificate[] getAcceptedIssuers() {
                return null;
            }

            public void checkClientTrusted(X509Certificate[] certs, String authType) {
            }

            public void checkServerTrusted(X509Certificate[] certs, String authType) {
            }
        };

        SSLContext sslContext = SSLContext.getInstance("SSL");
        sslContext.init(null, new TrustManager[]{bogusTrustManager}, new java.security.SecureRandom());

        HostnameVerifier bogusHostnameVerifier = (hostname, session) -> true;

        return new Jedis(URI.create(System.getenv("REDIS_URL")),
                sslContext.getSocketFactory(),
                sslContext.getDefaultSSLParameters(),
                bogusHostnameVerifier);

    } catch (NoSuchAlgorithmException | KeyManagementException e) {
        throw new RuntimeException("Cannot obtain Redis connection!", e);
    }
}

マルチスレッド環境 (Web サーバーなど) で Jedis を実行している場合は、同じ Jedis インスタンスを使用して Redis を操作しないでください。そうではなく、Jedis Pool を作成して、アプリケーションコードが Redis 接続をチェックアウトし、操作が終了したら接続をプールに返すようにしてください。

// The assumption with this method is that it's been called when the application
// is booting up so that a static pool has been created for all threads to use.
// e.g. pool = getPool()
public static JedisPool getPool() {
    try {
        TrustManager bogusTrustManager = new X509TrustManager() {
            public X509Certificate[] getAcceptedIssuers() {
                return null;
            }

            public void checkClientTrusted(X509Certificate[] certs, String authType) {
            }

            public void checkServerTrusted(X509Certificate[] certs, String authType) {
            }
        };

        SSLContext sslContext = SSLContext.getInstance("SSL");
        sslContext.init(null, new TrustManager[]{bogusTrustManager}, new java.security.SecureRandom());

        HostnameVerifier bogusHostnameVerifier = (hostname, session) -> true;

        JedisPoolConfig poolConfig = new JedisPoolConfig();
        poolConfig.setMaxTotal(10);
        poolConfig.setMaxIdle(5);
        poolConfig.setMinIdle(1);
        poolConfig.setTestOnBorrow(true);
        poolConfig.setTestOnReturn(true);
        poolConfig.setTestWhileIdle(true);

        return new JedisPool(poolConfig,
                URI.create(System.getenv("REDIS_URL")),
                sslContext.getSocketFactory(),
                sslContext.getDefaultSSLParameters(),
                bogusHostnameVerifier);

    } catch (NoSuchAlgorithmException | KeyManagementException e) {
        throw new RuntimeException("Cannot obtain Redis connection!", e);
    }
}
// In your multithreaded code this is where you'd checkout a connection
// and then return it to the pool
try (Jedis jedis = pool.getResource()){
  jedis.set("foo", "bar");
}

Ruby での接続

Heroku Data for Redis の Mini アドオンを使用している場合、REDIS_URL​ の代わりに REDIS_TLS_URL​ を使用して、TLS 接続経由で Redis アドオンに接続します。

Ruby アプリケーションで Redis を使用するには、Gemfile​ に redis​ gem を含める必要があります。

gem 'redis'

bundle install​ を実行して、すべての依存関係をダウンロードして解決します。

redis​ gem 4.0.2​ 以上を使用する必要があります。4.0.1​以下を使用して Heroku Data for Redis に SSL 経由でネイティブ接続することはできません。これは、検証モードとして OpenSSL::SSL::VERIFY_NONE​ が無視されるためです。

Rails での接続

次のコードを含む config/initializers/redis.rb​ という名前のイニシャライザファイルを作成します。

$redis = Redis.new(url: ENV["REDIS_URL"], ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE })

Sidekiq からの接続

次のコードを含む config/initializers/sidekiq.rb​ という名前のイニシャライザファイルを作成します。

Sidekiq.configure_server do |config|
  config.redis = {
    url: ENV["REDIS_URL"],
    ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE }
  }
end

Sidekiq.configure_client do |config|
  config.redis = {
      url: ENV["REDIS_URL"],
      ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE }
  }
end

Python での接続

Heroku Data for Redis の Mini アドオンを使用している場合、REDIS_URL​ の代わりに REDIS_TLS_URL​ を使用して、TLS 接続経由で Redis アドオンに接続します。

Python アプリケーションで Redis を使用するには、redis​ パッケージを使用します。

$ pip install redis
$ pip freeze > requirements.txt

コード内でこのパッケージを使用して REDIS_URL​ に接続します。

import os
import redis

r = redis.from_url(os.environ.get("REDIS_URL"))

Redis に TLS が必要な場合、ssl_cert_reqs​ を設定して証明書の検証を無効化します。

import os
from urllib.parse import urlparse
import redis

url = urlparse(os.environ.get("REDIS_URL"))
r = redis.Redis(host=url.hostname, port=url.port, password=url.password, ssl=True, ssl_cert_reqs=None)

Django での接続

4.0 よりも前の Django バージョンを実行している場合、Django アプリケーションで Redis を使用するには、django-redis​ を使用します。

Django バージョン 4.0 以降を実行している場合は、django-redis または Django 4.0 で導入された組み込みの Redis バックエンドサポート​を使用できます。

django-redis の使用

django-redis​ モジュールをインストールします。

$ pip install django-redis
$ pip freeze > requirements.txt

settings.py​ で、django_redis.cache.RedisCache​ を CACHES​ の BACKEND​ として設定します。

import os

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": os.environ.get('REDIS_URL'),
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

Redis に TLS が必要な場合、ssl_cert_reqs​ を設定して証明書の検証を無効化します。

import os

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": os.environ.get('REDIS_URL'),
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "CONNECTION_POOL_KWARGS": {
                "ssl_cert_reqs": None
            },
        }
    }
}

組み込みの Redis バックエンドサポートの使用

Django の組み込み Redis バックエンドサポートには、redis-py​ 3.0.0 以降が必要です。

settings.py​ で、django.core.cache.backends.redis.RedisCache​ を CACHES​ の BACKEND​ として設定します。

import os

CACHES = {
    "default": {
        "BACKEND": "django.core.cache.backends.redis.RedisCache",
        "LOCATION": os.environ.get('REDIS_URL')
    }
}

Redis に TLS が必要な場合、ssl_cert_reqs​ を設定して証明書の検証を無効化します。

import os

CACHES = {
    "default": {
        "BACKEND": "django.core.cache.backends.redis.RedisCache",
        "LOCATION": os.environ.get('REDIS_URL'),
        "OPTIONS": {
                "ssl_cert_reqs": None
        }
    }
}

Node.js での接続

Heroku Data for Redis の Mini アドオンを使用している場合、REDIS_URL​ の代わりに REDIS_TLS_URL​ を使用して、TLS 接続経由で Redis アドオンに接続します。

redis モジュール

redis​ NPM モジュールを依存関係に追加します。

npm install redis

このモジュールを使用して REDIS_URL​ に接続します。

const redis = require("redis");
const client = redis.createClient({url: process.env.REDIS_URL});

さらに、TLS を使用するように redis​ を設定できます。Node.js Redis バージョン 4.0.0 以降を使用している場合は、次のコードを使用して TLS に接続します。

const redis = require("redis");

const client = redis.createClient({
  url: process.env.REDIS_URL,
  socket: {
    tls: true,
    rejectUnauthorized: false,
  }
});

Node.js Redis バージョン 3.1.2 以前を使用している場合は、次のコードを使用して TLS に接続します。

const redis = require("redis");

const client = redis.createClient({
  url: process.env.REDIS_URL,
  tls: {
    rejectUnauthorized: false
  }
});

ioredis モジュール

ioredis​ NPM モジュールを依存関係に追加します。

npm install ioredis

そして、このモジュールを使用して REDIS_URL​ に接続します。

const Redis = require("ioredis");
const client = new Redis(process.env.REDIS_URL);

TLS を使用してクライアントを設定する場合は、次を使用できます。

const Redis = require("ioredis");

const client = new Redis(process.env.REDIS_URL, {
    tls: {
        rejectUnauthorized: false
    }
});

PHP での接続

Heroku Data for Redis の Mini アドオンを使用している場合、REDIS_URL​ の代わりに REDIS_TLS_URL​ を使用して、TLS 接続経由で Redis アドオンに接続します。

Redis 拡張機能を使用した接続

composer.json​ 内の要件に ext-redis​ を追加します。

"require": {
  …
  "ext-redis": "*",
  …
}

環境の REDIS_URL​ 環境設定を解析した後、Redis に接続します。

$url = parse_url(getenv("REDIS_URL"));
$redis = new Redis();
$redis->connect("tls://".$url["host"], $url["port"], 0, NULL, 0, 0, [
  "auth" => $url["pass"],
  "stream" => ["verify_peer" => false, "verify_peer_name" => false],
]);

Predis を使用した接続

composer.json​ で、predis​ パッケージを要件に追加します。

"require": {
  ...
  "predis/predis": "^1.1",
  ...
}

環境の REDIS_URL​ 環境設定を使用して Redis に接続します。

$redis = new Predis\Client(getenv('REDIS_URL') . "?ssl[verify_peer_name]=0&ssl[verify_peer]=0");

Go での接続

Heroku Data for Redis の Mini アドオンを使用している場合、REDIS_URL​ の代わりに REDIS_TLS_URL​ を使用して、TLS 接続経由で Redis アドオンに接続します。

アプリケーションに go-redis​ パッケージを追加します。

$ go get github.com/redis/go-redis/v9

パッケージをインポートします。

import "github.com/redis/go-redis/v9"

REDIS_URL​ 設定変数を使用して Redis に接続します。

uri := os.Getenv("REDIS_URL")
opts, err := redis.ParseURL(uri)
if err != nil {
    // Handle error
}

if strings.HasPrefix(uri, "rediss") {
    opts.TLSConfig = &tls.Config{
        InsecureSkipVerify: true,
    }
}
rdb := redis.NewClient(opts)

関連カテゴリー

  • Heroku Data For Redis
暗号化鍵を使用した Heroku Data for Redis の暗号化 PrivateLink を使用した Private または Shield Space 内の Heroku Data for Redis への接続

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure
  • .NET

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing
  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Github
  • LinkedIn
  • © 2025 Salesforce, Inc. All rights reserved. Various trademarks held by their respective owners. Salesforce Tower, 415 Mission Street, 3rd Floor, San Francisco, CA 94105, United States
  • heroku.com
  • Legal
  • Terms of Service
  • Privacy Information
  • Responsible Disclosure
  • Trust
  • Contact
  • Cookie Preferences
  • Your Privacy Choices