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.
Sitecore supports two versions of Redis session state provider: synchronous and asynchronous. This walkthrough describes how to use Redis as your private session state store using the Sitecore ASP.NET Session state store provider for Redis.
To prevent unexpected behaviors 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.
Sitecore does not support Redis Cluster.
Configure synchronous Redis session state provider
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:
-
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
-
Go to the
<sitename>\App_Config\
folder, open theConnectionStrings.config
file, and add the following connection string:RequestResponse<add name="session" connectionString="_host_:_port_number _" />
-
Configure the connection string so that it points to your session database.
-
Save your changes.
Configure Sitecore
To configure Sitecore to use the private Session state store provider for Redis:
-
Go to your site root folder, open the
web.config
file, and locate thesesssionState
section:RequestResponse<sessionState mode="InProc" cookieless="false" timeout="20">
-
In the
sessionState
section, update thecustomProvider
attribute to use the Redis provider instead of InProc, as shown in the following example. Also, change the value of thename
attribute value toredis
:RequestResponse<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>
Configure asynchronous Redis session state provider
To configure Sitecore to use the private asynchronous session state store provider for Redis:
-
Go to your site root folder, open the
web.config
file, go to<system.webServer>
and locate the<module>
section. -
In the
<module>
section, replace:RequestResponse<add name="Session" type="System.Web.SessionState.SessionStateModule" />
with:
RequestResponse<add name="Session" type="Microsoft.AspNet.SessionState.SessionStateModuleAsync, Microsoft.AspNet.SessionState.SessionStateModule" />
-
Go to
<system.web>
and in the<sessionState>
section find:RequestResponse<sessionState mode="InProc" cookieless="false" timeout="20">
and update the
customProvider
attribute to use the Redis provider instead of InProc. For example:RequestResponse<sessionState mode="Custom" customProvider="redisasync" timeout="20"> <providers> <add name="redisasync" type="Sitecore.SessionProvider.Redis.RedisSessionStateProviderAsync, Sitecore.SessionProvider.Redis" connectionString="session" pollingInterval="2" applicationName="private"/> </providers> </sessionState>
Adjust the Redis provider settings
To configure your session state:
-
Use the Redis provider settings reference.
If you have configured everything correctly, session records appear in your Redis session database after the first web request.