Tools
Client Program
- MemCacheD Manager v1.0.3.0 as Memcached Server
- Enyim Memcached Client as Memcached .Net Client Library (Add these references to your project: Enyim.Caching.dll, log4net.dll, MemcachedProviders.dll)
- Your Client Program
- Run the setup file and configure a Memcached Server as shown below:
Client Program
- Create a new .Net project and add these settings to web.config file as shown below:
<configSections>
<section name="cacheProvider" type="MemcachedProviders.Cache.CacheProviderSection, MemcachedProviders" allowDefinition="MachineToApplication" restartOnExternalChanges="true"/>
<sectionGroup name="enyim.com">
<section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection,
Enyim.Caching"/>
</sectionGroup>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
<enyim.com>
<memcached>
<servers>
<!-- put your own
server(s) here-->
<add address="127.0.0.1" port="12345"/>
</servers>
<socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00"/>
</memcached>
</enyim.com>
<cacheProvider defaultProvider="MemcachedCacheProvider">
<providers>
<add name="MemcachedCacheProvider" type="MemcachedProviders.Cache.MemcachedCacheProvider,
MemcachedProviders" keySuffix="_MySuffix" defaultExpireTime="2000"/>
</providers>
</cacheProvider>
<log4net>
<!--Define some output
appenders-->
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date
[%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
</layout>
<!--<threshold
value="OFF"/>-->
<!--Setup the root
category, add the appenders and set the default priority-->
<root>
<priority value="WARN"/>
<appender-ref ref="ConsoleAppender">
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="WARN"/>
<levelMax value="FATAL"/>
</filter>
</appender-ref>
</root>
</appender>
</log4net>
- Continue to add more settings data inside of <system.web> tag
<sessionState timeout="1" cookieless="false" regenerateExpiredSessionId="true" mode="Custom" customProvider="MemcachedSessionProvider">
<providers>
<add name="MemcachedSessionProvider" type="MemcachedProviders.Session.SessionStateProvider,MemcachedProviders" dbType="None" writeExceptionsToEventLog="false"/>
</providers>
</sessionState>
- Add these references to your project: Enyim.Caching.dll, log4net.dll, MemcachedProviders.dll
- Code your client program. Here is my sample program.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using MemcachedProviders.Cache;
using Enyim.Caching;
namespace WAMemcachedSessionTester
{
public partial class _Default :
System.Web.UI.Page
{
protected void
btnEkle_Click(object sender, EventArgs e)
{
string strKey = TextBox1.Text;
object objValue = TextBox2.Text;
DistCache.Add(strKey, objValue);
DropDownList1.Items.Add(strKey);
Label2.Text = (string)DistCache.Get(strKey);
}
protected void
btnGetir_Click(object sender, EventArgs e)
{
string strKey = null;
strKey =
DropDownList1.SelectedValue.ToString();
Label1.Text = (string)DistCache.Get(strKey);
}
protected void
Page_Load(object sender, EventArgs e)
{
Session["SessionTestBilgi"]
= "Test Bilgi OK";
if (Session["TIME"]
== null)
{
Session["TIME"] = DateTime.Now;
}
Response.Write(Session["TIME"].ToString());
}
protected void
btnSessionBilgisiGetir_Click(object sender, EventArgs e)
{
Label8.Text = "Session --->>
" + Session["SessionTestBilgi"]
+ " && SessionID --->> "
+ Session.SessionID.ToString();
}
}
}
- Deploy the client program to IIS.
- Add a new Application Pool and name it as TestAppPool.
- Change the client program's application pool to TestAppPool as shown below:
- Run the client program and then stop TestAppPool and check if the same data is still coming. If yes, then this means you are getting the data from the Memcached Server.
beni yeneceeemiÅŸ
ReplyDelete