---
title: "Walkthrough: Configuring a private session state database using the Redis provider"
slug: "walkthrough--configuring-a-private-session-state-database-using-the-redis-provider"
abstract: "Learn how to use Redis as your private session state store."
---
# Walkthrough: Configuring a private session state database using the Redis provider

In a private session state, all data related to a specific interaction, such as viewed pages, converted goals, triggered campaigns, or accumulated engagement points, is collected and saved to the session state database.

This walkthrough describes how to use Redis as your private session state store using the Sitecore ASP.NET Session state store provider for Redis.

> [!note]
> Sitecore does not support Redis Cluster.

> [!warning]
> To prevent unexpected behavior such as data loss, we recommend that you do not enable `aspnet:AllowConcurrentRequestsPerSession`. These issues might occur when using this option because the session is not blocked during the request.

<details>
<summary><h2>Deploy a private Redis session database</h2></summary>

The Sitecore ASP.NET Session state store provider for Redis enables you to use Redis as your session state store. The provider supports the `SessionEnd` event, which the xDB needs to track website visits.

To deploy a Redis session database:

1. Choose between Azure Redis or [Redis on premise](https://redis.io/). You can provision Azure Redis by using the instructions on the [Microsoft Azure website](https://azure.microsoft.com/en-us/documentation/articles/cache-dotnet-how-to-use-azure-redis-cache/) or with [Azure PowerShell](https://azure.microsoft.com/en-us/documentation/articles/cache-howto-manage-redis-cache-powershell/)
2. Go to the `<sitename>\App_Config\` folder, open the `ConnectionStrings.config` file, and add the following connection string:

    ```text
    <add name="session" connectionString="_host_:_port_number _" />
    ```

3. Configure the connection string so that it points to your session database.
4. Save your changes.

</details>

<details>
<summary><h2>Configure Sitecore</h2></summary>

To configure Sitecore to use the private Session state store provider for Redis:

1. Go to your site root folder, open the `web.config` file, and locate the `sesssionState` section:

    ```text
    <sessionState mode="InProc" cookieless="false" timeout="20">
    ```

2. In the `sessionState` section, update the `customProvider` attribute to use the `redis` provider instead of `InProc`, as shown in the following example. Also, change the value of the `name` attribute value to `redis`:

    ```xml
    <sessionState mode="Custom" customProvider="redis" timeout="20">
      <providers>
        <add name="redis"
          type="Sitecore.SessionProvider.Redis.RedisSessionStateProvider,
          Sitecore.SessionProvider.Redis"
          connectionString="session"
          pollingInterval="2"
          applicationName="private"/>
      </providers>
    </sessionState>
    ```

</details>

<details>
<summary><h2>Configure a dedicated Expired Session Processing server</h2></summary>

The Sitecore Experience platform supports a dedicated Redis server. This means that if you have an environment using a cluster of CD servers, you can configure some of the servers to only serve content, but not to process the expired session state data by using the `pollingEnabled` setting.

With the `pollingEnabled` setting you can enable/disable expired session processing. For example, you can enable it on the CD servers that are dedicated to processing expired sessions and disable it on the live CD servers (that serve content to visitors).

> [!important]
> You must ensure the servers that are dedicated to processing expired sessions are not serving content to visitors. For example, if you have configured a load balancer for CD servers, ensure requests do not redirect to servers that are dedicated to processing expired sessions.

To enable the `pollingEnabled` setting for expired private session processing:

- Go to the `web.config` file and check the `pollingEnabled` value is set to `true` for your dedicated Expired Session Processing servers.

To disable expired session state processing for the CD servers that serve content to customers:

- Go to the `web.config` file and set the `pollingEnabled` value to *false*:

    ```xml
    <sessionState mode="Custom" customProvider="<configured custom provider name>" timeout="20">
      <providers>
        <add name="="<configured custom provider name>"
          …
          pollingEnabled ="false"
          applicationName="private"/>
      </providers>
    </sessionState>
    ```

</details>

<details>
<summary><h2>Adjust the Redis provider settings</h2></summary>

Use the [Redis provider settings reference](https://doc.sitecore.com/xp/en/developers/91/platform-administration-and-architecture/redis-provider-settings-reference.html "Redis provider settings reference") to configure your session state. If you have configured everything correctly, session records appear in your Redis session database after the first web request.

</details>