1、.NET memcached client library 是否支持鉴权,通过用户名、密码来访问memcached server?
2、Enyim Memcached客户端是否支持压缩?好像没找到类似.NET memcached client里面那样的MemcachedClient.EnableCompression压缩选项。
求高人指点~~
1. 支持,我们就这样使用了,示例配置如下:
<enyim.com> <memcached protocol="Binary"> <servers> <add address="memcached" port="11211" /> </servers> <authentication type="Enyim.Caching.Memcached.PlainTextAuthenticator, Enyim.Caching" zone="" userName="用户名" password="密码" /> </memcached> <log factory="Enyim.Caching.Log4NetFactory, Enyim.Caching.Log4NetAdapter" /> </enyim.com>
2. 有些memcached服务器会在服务端进行压缩,比如Couchbase。
如果在客户端压缩,可以自己进行压缩,在.NET中进行压缩/解压很简单,示例代码如下:
static string Compress(string s) { if (string.IsNullOrEmpty(s)) return s; var bytes = Encoding.Unicode.GetBytes(s); using (var msi = new MemoryStream(bytes)) using (var mso = new MemoryStream()) { using (var gs = new GZipStream(mso, CompressionMode.Compress)) { msi.CopyTo(gs); } return Convert.ToBase64String(mso.ToArray()); } } static string Decompress(string s) { if (string.IsNullOrEmpty(s)) return s; var bytes = Convert.FromBase64String(s); using (var msi = new MemoryStream(bytes)) using (var mso = new MemoryStream()) { using (var gs = new GZipStream(msi, CompressionMode.Decompress)) { gs.CopyTo(mso); } return Encoding.Unicode.GetString(mso.ToArray()); } }
谢谢@dudu ,你提供的方法很好用,已经解决了。