范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

golang实现自定义Cache模型

  有时候我们在我们自己的项目中需要实现兼容各种驱动的Cache模型,以便于通过配置更换缓存类型。 缓存模型需要支持不同驱动,例如:memory、file、redis、mysql,实现思路代码如下: cache.go文件,定义缓存对外接口模型代码//可以自定义扩展驱动类型 默认是 memory driver   package cache   import ( 	"./driver" )   //cache接口声明 type Cacher interface { 	GetStorage() driver.Containerer 	Set(k string, v interface{}) 	Get(k string) (interface{}, bool) 	Del(k string) 	Has(k string) bool }   //create memory cache //type "file" or "memory" func Newcache(cacheType string) Cacher { 	switch cacheType { 	case "memory": 		return &driver.CacheImpl{Driver: driver.NewMapContainer()} 	case "file": 		{ 			return &driver.CacheImpl{Driver: driver.NewFileContainer()} 		} 	case "mysql": 		{ 			return &driver.CacheImpl{Driver: driver.NewMysqlContainer()} 		} 	case "redis": 		{ 			return &driver.CacheImpl{Driver: driver.NewRedisContainer()} 		} 	case "mongodb": 		{ 			return &driver.CacheImpl{Driver: driver.NewMongoContainer()} 		} 	} 	return nil }driver.go 实现驱动,这里我只利用Map实现了,具体其他驱动可自行实现//可以自定义扩展驱动类型 默认是 memory cache   package driver   //容器接口声明 type Containerer interface { 	PushKVPair(k, v interface{}) Containerer 	EraseKVPair(k interface{}) Containerer 	PushKVMaps(maps ...map[string]interface{}) Containerer 	ResetKVPair(k string, v interface{}) Containerer 	ResetOrAddKVPair(k string, v interface{}) Containerer 	ResetKVPairs(kvMaps map[string]interface{}) Containerer 	ResetOrAddKVPairs(kvMaps map[string]interface{}) Containerer 	Exist(k interface{}) bool 	GetData() *map[string]interface{} }   //基于内存实现的缓存 type CacheImpl struct { 	Driver Containerer //数据缓存驱动 }   func (self *CacheImpl) Exist(k interface{}) bool {   	return self.Driver.Exist(k) }   func (self *CacheImpl) GetStorage() Containerer { 	return self.Driver }   //set func (self *CacheImpl) Set(k string, v interface{}) { 	self.Driver.PushKVPair(k, v) }   //get func (self *CacheImpl) Get(k string) (interface{}, bool) { 	mapData := *self.Driver.GetData() 	val, ok := mapData[k] 	return val, ok }   //erase func (self *CacheImpl) Del(k string) { 	self.Driver.EraseKVPair(k) }   //has func (self *CacheImpl) Has(k string) bool { 	mapData := *self.Driver.GetData() 	_, ok := mapData[k] 	return ok }   //Map实现的内存驱动 type MapContainer struct { 	data map[string]interface{} }   //创建数据channer func NewMapContainer() *MapContainer { 	return &MapContainer{data: make(map[string]interface{})} }   func (this *MapContainer) PushKVPair(k, v interface{}) Containerer { 	if key, ok := k.(string); !ok { 		panic("key必须是string类型!") 	} else { 		this.data[key] = v 	} 	return this }   func (this *MapContainer) Exist(k interface{}) bool { 	return true }   func (this *MapContainer) EraseKVPair(k interface{}) Containerer { 	if key, ok := k.(string); !ok { 		panic("key必须是string类型!") 	} else { 		delete(this.data, key) 	} 	return this } func (this *MapContainer) PushKVMaps(maps ...map[string]interface{}) Containerer { 	for _, itemMap := range maps { 		for itemKey, itemValue := range itemMap { 			this.PushKVPair(itemKey, itemValue) 		} 	} 	return this } func (this *MapContainer) ResetKVPair(k string, v interface{}) Containerer { 	if _, ok := this.data[k]; ok { 		this.data[k] = v 	} 	return this } func (this *MapContainer) ResetOrAddKVPair(k string, v interface{}) Containerer { 	this.data[k] = v 	return this }   func (this *MapContainer) ResetKVPairs(kvMaps map[string]interface{}) Containerer { 	for k, v := range kvMaps { 		if _, ok := this.data[k]; ok { 			this.data[k] = v 		} 	} 	return this }   func (this *MapContainer) ResetOrAddKVPairs(kvMaps map[string]interface{}) Containerer { 	for k, v := range kvMaps { 		this.data[k] = v 	} 	return this }   func (this *MapContainer) GetData() *map[string]interface{} { 	return &this.data }
  到此一个基础Memory类型的驱动就构建完成 ,我们也可以通过这个模型去构建 redis、mysql等等驱动实现自定义缓存。

腾讯高层很无奈为什么你们都将QQ号卖了?网友可以换套房QQ对于腾讯来说,也是非常具有标志性的一款产品。从某种程度上来说,马化腾正是通过QQ开启了自己的发家之路。不过或许他自己都没有想到,若干年之后,一个QQ号居然能够换到一套房子!在微红利简讯朝阳区全员居家办公百度新一轮干部轮岗比亚迪陷负面风暴强制员工五一加班者道歉快手以死明志职场事件后续36氪职场Bonus(IDZhiChangHongLi)五一假期结束,为做好疫情防控,朝阳区发布全体职工居家办公简章中青宝在官微对公司高层五一期间发表强制加班进行道歉,五一期间,你智慧睡眠丨高科技分析你的睡眠和梦话,伴你安然入睡现在的人们由于生活中快节奏,工作繁忙造成睡眠质量差,让许多人的正常睡眠时间大大减少,很多人都带有一个熊猫眼周而复始的这样工作生活中,久劳成疾,并且长期睡眠不足也会给隔天的生活中产生互联网工资到顶了吗?过去十年提起互联网,大家的首先印象是薪资高,不管是中国还是美国都是如此,比如在美国入职谷歌或者Facebook,一般起薪能达到十几万美元。干几年可以达到20万美元。而美国一般大学生IQOONeo6SE,红米K50,真我GTneo3,三款神机如何选?在手机圈谈起极致的性价比,红米RealmeIQOO,三大家族之名如雷贯耳。尤其是今年三月发布的红米K50,无论销量还是口碑都是现象级,不仅成为了两千价位段的旗舰守门员,还化身考官,IQOO9Pro值得入手吗IQOO9Pro,作为众多骁龙旗舰的一款值得我们入手吗,下面我们就从几个角度简单分析一下。外观第一眼看到IQOO9Pro,虽然感觉挺好看,但是背部感觉怎么越看越像小米11ultraOPPOReno8Pro全面评测轻装上阵的双芯人像摄影大师OPPOReno系列对于爱拿手机拍照的用户来说,绝对不陌生,凭借多年来在人像拍摄领域的深耕,特别是从OPPOReno5系列首款人像视频手机开始,到OPPOReno6系列主打的焕采人探讨2022年,小米哪些手机值得我们去买?我们打开小米的官网,然后,在手机一栏中看到目前小米正在销售的手机。我们今天就和大家一起分享一下,在2022年的今天小米手机中,到底有哪些值得购买?先说一下小米目前的策略1。高端的小6499元起,vivoXNote大屏旗舰百里丹霞配色今日开售IT之家5月20日消息,vivoXNote大屏旗舰全新配色百里丹霞于5月13日开启预售,将于今日上午1000正式开售。12GB256GB版本售价6499元12GB512GB版本售价wordpress中使用Nonce防止网站受到CSRF攻击使用Nonce(numberusedonce)是防止WordPress主题或者插件受到CSRF(crosssiterequestforgery)攻击最好的方法,WordPressNvivos15pro吊打vivox80?一分钱一分货,看完你就知道想多了vivoS15系列发布,包括vivoS15和vivoS15Pro两款机型,其中vivoS15Pro各方面实力都直逼vivoX80,但价格却比vivoX80要便宜,那么vivoS15
好家云店新人营人才辈出,1周赚到6000,1天卖出牛奶100箱8月中旬,自好家云店新店主训练营正式升级为7天起飞训练营以来,店主队伍里已经涌现出了越来越多优秀的新人。1周赚到6000,1天卖出牛奶100箱这些新店主创造了一个又一个巅峰。。在这郡旗全自动智能指纹锁打造猫眼可视安全门锁郡旗全自动智能指纹锁是郡旗智能自主研发生产销售的一款高科技产品,集指纹密码刷卡机械钥匙微信APP多种开锁方式于一体,抛弃传统单一开锁模式,弱化钥匙密码的存在感,同时实现了远程开锁的抗洪救灾中的科技力量沃飞长空傲势无人机在行动7月20日8时至7月21日6时,河南出现特大暴雨灾情。防汛救灾,刻不容缓!沃飞长空傲势无人机立即行动。一系统开展,傲势无人机系统实现全方位监控7月21日,沃飞长空救援团队星夜兼程驰光达制造以新一代工业园助推制造业高质量发展于城市而言,先进的制造业发展不仅是内部促活经济的基础,更是外部提升城际竞争力的有效抓手。当前,我国正加速构建双循环新发展格局,制造业发展也迎来转型升级的关键时刻。东莞正以科技创新为这句成语,一用就是2500年和光同尘出处道德经第四章和第五十六章原文挫其锐,解其纷,和其光,同其尘。百度汉语解释老子四章和其光,同其尘。意思是涵蓄着光耀,混同着尘垢,与好坏都能相合,不自立异。后多指不露锋芒,文创教父来了,千万别再喊没灵感了!陈鹤君陈鹤君(坑坑)超前部署投资亚马逊好事多虾皮,被投资同行尊为趋势先知,2021发表美乐家是消费新选择。1974年白羊座环球101基金经理人挫其锐,解其纷,是谓玄同。坑坑与陳志亮摄影大酷狗音乐地表8英里II直播巡演8月9日黄旭梁维嘉制躁北京8月9日及10日,由酷狗音乐独家出品,魔爪能量饮料独家冠名的原创中文说唱音乐纪录片地表8英里第二季城市直播巡演将迎来北京站广州站双站连演!8月9日2000,黄旭梁维嘉Saber制躁手办消费成大热趋势哔哩哔哩会员购打造首选平台新消费时代,Z世代已然崛起。在社会经济不断发展之下成长起来的Z世代,相比上一代消费人群来说,比起物质需求他们更加在意精神需求,愿意为体验和兴趣买单。手办市场作为一个小众市场,就在Z中国主导的首个二维码码制国际标准正式发布中国经济网北京9月2日讯国际标准化组织(ISO)和国际电工协会(IEC)正式发布汉信码ISOIEC国际标准ISOIEC208302021信息技术自动识别与数据采集技术汉信码条码符号试驾威兰达高性能版,百公里加速5。92秒,纯电续航87KM由于新能源市场火爆,各大汽车厂商赋予了家族经典车型新的活力。就拿广汽丰田来讲,威兰达一直是家族高销量车型之一,在今年5月份,丰田选择推出插电式混合动力版本的威兰达,同样也是家族第一试驾林肯MKZ2。0T尊享型,配2。0T引擎悬架支持软硬调校!试驾林肯MKZ2。0T尊享型,配2。0T引擎悬架支持软硬调校!在入门级别豪华车里,选择余地有很多,有些人喜欢宝马3系,有些人喜欢凯迪拉克CT5,也会有人喜欢纯电动车型并且支持国产,华帝烟机J659AHS拒绝烟熏火燎,未来科技感爆棚作为智能厨房的入口和关键核心,一台智能抽油烟机可以运用硬核技术,快速彻底地将厨房油烟排出,为大家创造更洁净的厨房环境。华帝烟机J659AHS便是如此,它以去除油烟三部曲,并且创造性深圳深意吉利远景优惠高达0。8万元福田吉利深意店远景现车限时优惠,可试乘试驾远景现车在店,购车可享多重优惠方案零息方案首付20,2年0息50享3年0息超长期限超低月供方案首付50,每天18元远景带回家附加贷0首付低星越PHEV享受补贴还优惠1。05万元福田深圳深意店星越ePro现车限时优惠,可试乘试驾星越ePro现车在店,购车可享多重优惠方案超长期限超低月供方案首付50,每天50元星越ePro带回家附加贷0首付低日供方案汽车0首欧洲杯VS吉利汽车高光球员适合哪款车?欧洲杯已经结束。回顾当时,瓜子板凳铁杆朋友备好,微醺小酒馆必须提前约好。中国男子八大球无缘东京奥运会我也不关心了,一心只想等着看到底哪个国家能冲出决赛圈,毕竟买足彩还是花了四位数的深圳深意吉利星瑞现金优惠0。1万元福田吉利深意店星瑞现车限时优惠,可试乘试驾星瑞现车在店,购车可享多重优惠方案超级充值礼遇6月30日前购车可享4年12万公里免费保养超级保值礼遇6月30日前购车的新车主首任车主可获得同样是嫁给郑中基,为什么蔡卓妍不敢公开,余思敏却大秀幸福这首答应不爱你是仙剑奇侠传的插曲,这首歌唱出了爱而不得的心酸,还有分手后还是爱着前任的悲哀。但应该很少有人知道,这首歌是郑中基唱的。作为实力唱将,郑中基对现在的选秀节目非常看不惯,网传小米12Ultra渲染图,这个设计大家觉得OK吗?小米10系列让小米手机重回巅峰,而到了小米11系列上却因为处理器系统等问题,让它的脚步有所减缓,而小米11系列和小米10系列相比,也没有那么保值。小米11Pro和小米11Ultra戴口罩和眼镜起雾气也能解锁了?相关人士爆料苹果已在测试FaceIDFaceID这个功能相信现在大家都不陌生了,刚在iPhoneX上诞生的时候,那是惊艳了全世界,原来手机解锁还可以这样玩,而FaceID解锁除了便捷性以外,它的安全性也是大家所看重的Angelababy哭戏登顶热搜,不用眼药水看剧本就落泪流量明星转型演员第一步,便是在演技上获得大众的认可。85后小花Angelababy演技虽然被网友们诟病多年,却依然兢兢业业接戏拍戏,不断尝试新的可能,终于有朝一日靠哭戏上了热搜第一乘风破浪的姐姐,翻车了?发现没?最近乘风破浪的姐姐热度渐渐降下去了。刚开始,每个人都张扬自信姐味十足。到现在迎合观众审美,舞台趋于同化。高开低走。甚至,越来越多人表示乘风破浪的姐姐越来越看不下去了。为什么这部是今年夏天最好看的青春剧,不是吗?电视剧如此可爱的我们短短两周就播完了,这部只有十六集的小甜剧比起大制作,虽然没有什么宣传和热度,但依旧凭借大家的口口相传,赢得了对它来说最大的好评和支持。这部剧是由猫的树指导,李明