Memcached快递上手之C#
C# 操作Memcached
Memcached是开源高性能分布式缓存组件,目前已经广泛应用各类互联网领域. 具有多种语言的客户端开发包,包括:Perl/PHP/JAVA/C/Python/Ruby/C#/MySQL. 这此站点已经在使用YouTube,Reddit,Zynga,Facebook,Orange它. 看
下面的图比较形象.
同样它也是扩平台的,今天我们来看windows下的服务端以及使用.net的客户端访问它.我们
选择了Enyim Memcached这个客户端.
首先,我们安装windows版的服务端,你可以从这个站点下载. 安装时使用命令行:
memcached.exe –d install
这样将Windows service中创建一个memcached的服务. 同样你可以使用 –d uninstall 来卸载它. 运行时将默认监听11211
IP:127.0.0.1,如下图所示:
要在nuget里引用(安装) EnyimMemcached ,下面是以调用阿里云的ocs(memcached)服务为例
- using System;
- using Enyim.Caching;
- namespace MemcacheTest
- {
- /// <summary>
- /// MemcachedClient 帮组类 对外提供接口方法
- /// </summary>
- public class MemcachedHelper
- {
- /// <summary>
- /// 定义一个静态MemcachedClient客户端,它随类一起加载,所有对象共用
- /// </summary>
- private static MemcachedClient mclient;
- /// <summary>
- /// 静态构造函数,初始化Memcached客户端
- /// </summary>
- static MemcachedHelper()
- {
- mclient = MemCached.getInstance();
- }
- /// <summary>
- /// 向Memcached缓存中添加一条数据
- /// </summary>
- /// <param name="groupName">组名,用来区分不同的服务或应用场景</param>
- /// <param name="key">键</param>
- /// <param name="value">值</param>
- /// <param name="expiry">过期时间</param>
- /// <returns>返回是否添加成功</returns>
- public static bool SetValue(string groupName,string key, object value, DateTime expiry)
- {
- key = groupName + "-" + key;
- return mclient.Store(Enyim.Caching.Memcached.StoreMode.Set,key, value, expiry);
- }
- /// <summary>
- /// 向Memcached缓存中添加一条数据 默认超时24小时
- /// </summary>
- /// <param name="groupName">组名,用来区分不同的服务或应用场景</param>
- /// <param name="key"></param>
- /// <param name="value"></param>
- /// <returns></returns>
- public static bool SetValue(string groupName, string key, object value)
- {
- key = groupName + "-" + key;
- return mclient.Store(Enyim.Caching.Memcached.StoreMode.Set, key, value, DateTime.Now.AddHours(24));
- }
- /// <summary>
- /// 通过key 来得到一个对象
- /// </summary>
- /// <param name="groupName">组名,用来区分不同的服务或应用场景</param>
- /// <param name="key">键</param>
- /// <returns>对象</returns>
- public static object GetValue(string groupName, string key)
- {
- key = groupName + "-" + key;
- return mclient.Get(key);
- }
- /// <summary>
- /// 通过key 来得到一个对象(前类型)
- /// </summary>
- /// <typeparam name="T">类型</typeparam>
- /// <param name="groupName">组名,用来区分不同的服务或应用场景</param>
- /// <param name="key">键</param>
- /// <returns></returns>
- public static T GetValue<T>(string groupName, string key)
- {
- key = groupName + "-" + key;
- return mclient.Get<T>(key);
- }
- /// <summary>
- /// 清除指定key的cache
- /// </summary>
- /// <param name="groupName">组名,用来区分不同的服务或应用场景</param>
- /// <param name="key">键</param>
- /// <returns></returns>
- public static bool Remove(string groupName, string key)
- {
- key = groupName + "-" + key;
- return mclient.Remove(key);
- }
- /// <summary>
- /// 清除所有cache
- /// </summary>
- public static void RemoveAll()
- {
- mclient.FlushAll();
- }
- }
- }
- using System.Net;
- using Enyim.Caching;
- using Enyim.Caching.Configuration;
- using Enyim.Caching.Memcached;
- namespace MemcacheTest
- {
- /// <summary>
- /// MemcachedClient 配置类
- /// </summary>
- public sealed class MemCached
- {
- private static MemcachedClient MemClient;
- static readonly object padlock = new object();
- //线程安全的单例模式
- public static MemcachedClient getInstance()
- {
- if (MemClient == null)
- {
- lock (padlock)
- {
- if (MemClient == null)
- {
- MemClientInit();
- }
- }
- }
- return MemClient;
- }
- static void MemClientInit()
- {
- //初始化缓存
- MemcachedClientConfiguration memConfig = new MemcachedClientConfiguration();
- IPAddress newaddress = IPAddress.Parse(Dns.GetHostEntry("XXXXXXXXXX.m.cnhzalicm10pub001.ocs.aliyuncs.com").AddressList[0].ToString()); //xxxx替换为ocs控制台上的“内网地址”
- IPEndPoint ipEndPoint = new IPEndPoint(newaddress, 11211);
- // 配置文件 - ip
- memConfig.Servers.Add(ipEndPoint);
- // 配置文件 - 协议
- memConfig.Protocol = MemcachedProtocol.Binary;
- // 配置文件-权限,如果使用了免密码功能,则无需设置userName和password
- memConfig.Authentication.Type = typeof(PlainTextAuthenticator);
- memConfig.Authentication.Parameters["zone"] = "";
- memConfig.Authentication.Parameters["userName"] = "XXXXXXXXXXXXXXXXX";
- memConfig.Authentication.Parameters["password"] = "XXXXXXXXXX";
- //下面请根据实例的最大连接数进行设置
- memConfig.SocketPool.MinPoolSize = 5;
- memConfig.SocketPool.MaxPoolSize = 200;
- MemClient = new MemcachedClient(memConfig);
- }
- }
- }
- 程序调用
- MemcachedHelper.SetValue(groupName,strKey, strValue, DateTime.Now.AddMinutes(5));
- var restr = MemcachedHelper.GetValue(groupName,strKey);
- var obj = MemcachedHelper.GetValue<Product>(groupName,"p001");
Memcached快递上手之C#相关推荐
- linux内存管理子系统采用基于内存区域,Linux 内存管理之highmem简介
一.Linux内核地址空间 一般来说Linux 内核按照 3:1 的比率来划分虚拟内存(X86等):3 GB 的虚拟内存用于用户空间,1GB 的内存用于内核空间.当然有些体系结构如MIPS使用2:2 ...
- 快速上手微信小程序-快递100
2007 年 1 月 9 日,乔布斯在旧金山莫斯科尼会展中心发布了首款 iPhone,而在十年后的 1 月 9 日,微信小程序正式上线.张小龙以这样的形式,向乔布斯致敬. 小程序在哪里? 小程序功能模 ...
- 快递收发软件移动端上线啦!易上手好操作,轻松提高企业快递管理效率
为提升企业快递管理效率及企业管理员的操作便捷性,快递管家企业版移动端上线啦!旨在帮助企业在移动端实现快递寄件下单管理.寄件类型管理.打印管理及智能化到件录入管理.签收管理等功能. 如何开通快递管家企业 ...
- 为何Redis要比Memcached好用(转)
转载链接:http://blog.csdn.net/renfufei/article/details/40598889 GitHub版本地址: https://github.com/cncounter ...
- 设置自动关门时长_小米苹果全适配,绿米D100全自动指纹锁新鲜上手
Ciao Bella,我是老房 关于智能指纹门锁,其实老房老早就想装了.家里有位平均一两个月就要忘带一次钥匙的媳妇儿,甚至有好几次,我特意说了晚上有应酬晚回去千万记得要带钥匙,结果喝酒喝到一半,一个电 ...
- 如何快速上手一款开源软件
最近一篇比较火的文章中提到,techcrunch上有一篇文章,列举了当前最火的开源软件列表 https://techcrunch.com/2017/04/07/tracking-the-explosi ...
- 福禄克2500V数字绝缘电阻测试仪开箱与上手实测
福禄克近2年的手持仪表新品很多,今天我们分享一篇有点不一样的用户体验:一位资深工程师"玩家",超详尽的开箱.上手实测体验,及功能分享. 重点内容提前敲黑板: 开箱与配件 功能介绍 ...
- “死”在拥挤赛道上的快递员工
文/白草 来源/螳螂财经 极兔打价格战引起通达系快递全网封杀,近日网曝快递员纷纷罢工,单票收入越来越低,而双11日均包裹量预估高达4.9亿,陪跑11年的快递业今年亚历山大. 最明显的一个压力就是,今年 ...
- 这所高校的快递被机器人承包了,别人家的学校!
点击上方"大鱼机器人",选择"置顶/星标公众号" 福利干货,第一时间送达! 近日,在浙大校园里,自如行驶的22个物流机器人引来学生关注,它们会穿过人群.马路,到 ...
最新文章
- winstore独立安装包下载_QT使用教程(二)之下载篇
- Java设计模式(十):迭代器设计模式
- TextBox和DataGridView控件的事件发生顺序
- Calendar详解
- html5 filereader读取文件,H5的FileReader分布读取文件应该如何使用以及其方法简介...
- 第一章第一节:C++简介与学习方法
- shell 脚本编程的10 个最佳实践
- 敏捷开发一千零一问系列之六:业务人员怎样参与开发?
- 单例模式的懒汉模式和饿汉模式
- 在Linux环境下Nginx解决跨域问题
- 为什么打工人996会猝死,而老板007不会?
- 安装Windows Outlook邮箱客户端
- Microsoft Visio 文本框上标或下标
- matlab随机样本的选择,matlab随机抽样 | 学步园
- PCL:demeanPointCloud ❤️ 去点云质心
- 在博客和Markdown和Python中自由添加emoji!包括博客标题和Python打印!
- 【2022软件创新实验室暑假集训】Java环境安装与基础介绍
- 秦皇岛达内传授零基础怎样学平面设计
- 彩铃多多 v2.4.5.0
- OSI模型与TCP/IP协议族
热门文章
- Non-resolvable parent POM for com.example:demo:0.0.1-SNAPSHOT: Could not transfer artifact org.sprin
- 一个适合在校生宝藏编程学习网站
- 千锋教育+计算机四级网络-计算机网络学习-02
- 无线接入控制服务器(ac),无线AP控制器是什么?无线AP与无线AC的区别
- Scrapy之10行代码爬下电影天堂全站
- BS4爬取电影天堂的下载地址并保存至csv文件
- 解决VirtualBox不能为虚拟电脑打开一个新任务
- 这应该是我见过最干净的影视资源搜索站点
- matlab二维绘图部分
- linux aria进程,Linux安装 Aria2