I am seeing something that struck me as a little odd.
>From my reading, as I understand, in a memcached environment, each memcache
node contains a portion of the objects in the cluster.
So, I would expect something like if I have 27 keys and 3 nodes.
Each node is holding ~9 keys/objects.... is that correct to assume?
So, to test out...
<add key="MemCached.Endpoint"
value="server1:11211,server2:11211,server3:11211" />
As a client, I am using the BeIT Memcached Client for .NET
(code.google.com/p/beitmemcached/)
To get the keys, I am using Telnet, to get slabs, and then the items, as
described by Boris here:
groups.google.com/forum/#!topic/memcached/YyzonP9HUi0
1) I loop through my collection of hosts
2) Do the telnet process against that host
3) Collect all the info.
It seems to me, that I am getting the same keys listed on all 3
servers..... ?
*I did not expect this, and I am hoping someone can explain.*
To clarify:
This is how I do a GET:
And this is how I am trying to get the list of keys.... there is a bit of
debug code buried in there, but it should still be clear:
(TelNetConn = A simple telnet helper)
List<string> ret = new List<string>();
string memCacheEndPointAddress =
Config.GetValueWithDefault("MemCached.Endpoint", "localhost:11211");
string[] points = memCacheEndPointAddress.Split(new[] { ',' },
StringSplitOptions.RemoveEmptyEntries);
foreach (string h in points)
{
string[] hParts = h.Split(new[] { ':' },
StringSplitOptions.RemoveEmptyEntries);
string cacheHost = hParts[0];
TelNetConn tc = new TelNetConn(cacheHost,
Convert.ToInt32(hParts[1]));
if (tc.IsConnected)
{
ret.Add("HOST: " + cacheHost);
tc.WriteLine("stats items");
String s = tc.Read();
String[] sLines = s.Split(
new string[] { Environment.NewLine },
StringSplitOptions.RemoveEmptyEntries);
foreach (string sl in sLines)
{
if (sl == "END") continue;
String[] slParts = sl.Split(new[] { ':' },
StringSplitOptions.RemoveEmptyEntries);
int slabID = Convert.ToInt32(slParts[1]);
string slabType = slParts[2];
if (slabType.StartsWith("number") ||
slabType.StartsWith("age"))
{
tc.WriteLine("stats cachedump " +
slabID + " 100");
s = tc.Read();
if (!String.IsNullOrEmpty(s))
{
if (s != "END")
{
// ret.Add("FULL: " + s);
if (s.StartsWith("ITEM "))
{
string[] itemparts =
s.Split(new[] { ' ' }, StringSplitOptions.None);
string key = itemparts[1];
ret.Add("ITEM: " + key);
}
}
}
}
}
}
else
{
ret.Add("HOST: " + cacheHost + " NOT
CONNECTED");
}
tc.Dispose();
}
--
---
You received this message because you are subscribed to the Google Groups
"memcached" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.