Walkthrough: Configuring a shared session state database using the Redis provider

Current version: 9.2

In a shared session state, all data that can be shared across multiple sessions, for example, the data related to contacts, is collected and saved to the session state database

A contact can make multiple parallel visits to a website, in which case each visit has its own private session state. However, some data can be shared between visits, such as contact related information.

Information that is shared between parallel visits by the same contact is stored in the shared session state store. This data is still private to the contact but it is accessible from all current sessions made by the same contact.

This walkthrough describes how to use Redis as your out-of-process shared session state store using the Sitecore session state provider for Redis.

This walkthrough describes how to:

  • Deploy a shared Redis session database

  • Configure Sitecore

  • Configure a dedicated Redis Session Processing server

  • Adjust the Redis provider settings

Note

Sitecore does not support Redis Cluster.

Deploy a shared Redis session database

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.

Important

Do not make changes directly to the configuration files. Instead, you must create a patch file that performs the required changes during runtime.

To deploy a Redis session database:

  1. Choose between Azure Redis or Redis on premise. You can provision Azure Redis by using the instructions on the Microsoft Azure website or with Azure PowerShell.

  2. Go to the <sitename>\App_Config folder, open the ConnectionStrings.config file, and add the following connection string:

    RequestResponse
    <add name="sharedSession" connectionString="_host_:_port_number _" />
  3. Configure the connection string so that it points to your session database.

  4. Save your changes.

Configure Sitecore

The default shared-session store uses the in process provider, which stores data in memory and is implemented in the internal ASP.NET class InProcSessionStateStore:

RequestResponse
<sharedSessionState defaultProvider="inProc">
  <providers>
    <clear/>
    <add name="inProc"
      type="System.Web.SessionState.InProcSessionStateStore"
      />
  </providers>
Important

Do not make changes directly to the configuration files. Instead, you must create a patch file that performs the required changes during runtime.

To configure Sitecore to instead use the shared session state provider for Redis:

  1. In your website root folder, navigate to the App_Config\Sitecore\Marketing.Tracking folder.

  2. Open the Sitecore.Analytics.Tracking.Config file.

  3. Locate the line where you can define the default shared session state provider using the following path: sitecore/tracking/sharedSessionState.

  4. Update the sharedSessionState section to use Redis as the defaultProvider, not inProc, as shown in the following example. You must also change the name attribute value to redis.

    RequestResponse
    <sharedSessionState defaultProvider="redis">
      <providers>
        <clear/>
          <add name="redis" type="Sitecore.SessionProvider.Redis.RedisSessionStateProvider,   
                  Sitecore.SessionProvider.Redis"
                  connectionString="sharedSession"
                  pollingInterval="2"
                  applicationName="shared"/>
      </providers>
    </sharedSessionState>

Adjust the Redis provider settings

Use the 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.

Do you have some feedback for us?

If you have suggestions for improving this article,