新普金娱乐网址


自身偏偏不苟变成好闺女

《鲁南小城市的故事》|40.鲁南毕业,总以为遥遥无期

冲C#的MongoDB数据库开发应用(4)–Redis的装及下

  • 九月 16, 2018
  • 数学
  • 没有评论

当前边介绍了三首关于MongoDB数据库的开销应用文章,严格来讲是不克归类于MongoDB数据库开发,不过Redis又不无和MongoDB数据库非常仔细的涉嫌,它们两者非常相近,Redis主要是外存中的NoSQL数据库,用来增强性的;MongoDB数据库则是文本中之NoSQL数据库,做多少列号囤使用的,它们两者关系密切又有所区别。本篇主要介绍Redis的安以及采取,为后Redis和MongoDB数据库的共利用先铺下基础。

夏日夏日,来十斤麻辣稍龙虾(文/远方不远)

自小在于江南的乡村,江南大凡多水的,水柔软如大多情,待在这种地方,人即专门爱受拉动达道的智慧,融合着成为不起头之温情。夏天里,想象自己之所以竹篙撑在同等拏小船儿,在荷塘里日益地荡悠,推开一切片荷叶,看见一介乎小渚,渚上博着同样栋茅草屋,穿在大红肚兜的丫头坐于门扉的竹凳上,自顾自地扒开着茂密,偶然之中抬头看到了客人,赶忙冲屋子里的奶奶招呼一名誉,“奶奶,来人数啦。”这时候,一各类老奶奶人,穿在素色蜡染的船服,头上扎着同头带,便会缓慢地挪出来,“哎呀,伢伲,回来了什么,刚才囡囡钓了一如既往充分桶虾子,中午恰好留下来一起吃海虾。”

立马就是是江南底夏日,似乎每个女孩儿都见面失去池塘里钓龙虾,家家户户的灶膛里,也由烟囱弥漫起平抹鲜美辣爽的瑞烧龙虾的香味。在我之乡,但凡是小活物,都要后缀一个“子”,譬如小狗是狗子,龙虾就是虾子了,而孩子等的小名自然吧是略狗子,小虾子等等。若是讨论起大小来,小的话,都于作同样渺渺,“这点虾子小得起来不得眼睛,只出相同渺渺。”好不容易抓到了酷虾子,那就算当眼前加一个海字,海是一个形容词,因为苏皖交界的水乡人是生少看到海之,没有看,那就是是大得无法想像,故而他们管成千上万十分物件都如喝作海,家里盛饭之好腕叫作海碗,很酷之龙虾就不怕深受作海虾,中午发烧了龙虾,小孩子嘴馋,就会发声,“庚早,我如果吃一海碗海虾。”

本人之幼时活,自然吧是这般过来的。门前桑树上的明了一致为,我们就是知道夏天来了,夏天对于子女等来谈即如是西方,打在赤膊,光在脚丫,无拘无束地可当各地里撒泼,整整浪荡两单月。祖父每天吃午餐,二鲜酒下肚后,都使午寐一会,这时候村里的伴儿就见面藏在我家的窗檐沿下学了少名气狗为,我顶及祖父一翻身,呼噜声乍起,就会见默默地溜出户。出门后就是涉及稀码业务,捞知了或钓龙虾。其实祖父那是假睡,因为自老是傍晚进家门,东西还无领上门槛,他的响动便飘了出,“你介个小坏,今天钓了不怎么虾子啊。”祖父是贪吃的,夏天里,小龙虾和白酒总是慌配。

钓龙虾对于咱们的小儿来讲,是如出一辙起保留节目,就比如是年年的伏季,我家那台熊猫牌黑白电视总是不断地播报《西游记》,这部经典连续剧里头也是来虾子的,不过那是龙宫里之战士,虽然身为虾兵蟹将,按理讲也该算是神,或许虾吃喊作龙虾龙虾的,就是于《西游记》里流淌出来的,无非是身在龙宫,又加上了点滴彻底类似龙须的须。

我们领到正一个塑料桶,从妈妈裹好之所以来针定被子的线球上,直接咬下一样段落来,找根象牙签团上塞在裤兜里,然后于居家的地步里拔一绝望扶苗的竹竿,这从要偷之,每次吃浇菜的老者看见都使拿我们赶出老远老远,追不顶还要当末端大骂,“生头家有些坏,你飞,晚上去你家上门。”但是拿他田里的竹竿都拔光了,也远非见老人去我家上门,水乡的老都是恐吓吓唬人的,因为她们小时候为是如此过来的。我们不管找一处于池塘或者河汊,而且一旦发出雷同棵树木好庇荫,这种地方在江南水乡随处可见,把小伙事一闲置,几个人就是要错过稻田里捕饵料,饵料是微田蛙,龙虾最轻吃的事物。

这儿的水稻都割了,很多田蛙都跳来跳去,抓及了将剥皮,这事本身关系过无数,如今想来呢是造孽。不仅剥青蛙皮,也足以剥水蛇皮,不过蛇比青蛙少沾,它地处食物链上面,竟然到头来被食物链下面的动物叫吃了,可谓是相同件悲催的作业,但是精用,一个青蛙顶多钓鱼半天,而同一修蛇我们可以就此来钓两三龙。其实最残忍的事体是,我们累是优先钓了同等只上虾后,会拿上虾壳给扒了,用龙虾钓龙虾,这是才是坏灭绝虾性的,同类相残啊。家里人也无让咱这么干,因为蛇在山乡为称作家神,造屋遇到了,会针对她烧香请其去,而青蛙在农人眼里更是益虫,可以吃虫的。可是不捕她而岂能够钓龙虾呢,我后来虽偷偷割一点肥猪肉,肥猪肉会发于水面达没不下去,我便找块石头系在,水面及鱼目混珠一层油花,能引起来博上虾。倘若按这种逻辑来讲,猪吧是生啊,而且自偷割了猪肉,总会被祖母骂,害她丢掉受了次简单猪油。

一个下午犹当钓龙虾,时间总是过得很快,水面达飘了几乎切片叶子,泛起了几多泡,龙虾就上当了,龙虾很傻也颇贪心,它的不得了耳坠子一夹到饵料,就不愿意放手了,其实也非叫手,拿东西给作螯。鱼吞了鱼钩,那是思念呕吐没有章程吐,可是龙虾就是那执行着如不愿放弃,那我们便只有把其扔上水桶了。我们几乎个稍伙伴出门钓龙虾都是特着膀子的,闲在粗俗的农人也来集热闹,不过他们戴在凉帽,穿在长袖,每次我们都乐他们即热,因为狗子都曾趴在地上吐舌头。然后同到傍晚下班,就轮至她们骂我们最浅了。我们的胳膊一回家就疼痛地燎疼,齐刷刷蜕皮,而且又为穿不达到服了,因为布料咯着晒伤的手臂也会见痛生疼的,这种疼会持续一个夏,直到九月份开学后,还会休息上一个月份。

出门的时,一个塑料桶里空空如为,等到收杆的下,水桶里便满了,不过钓龙虾也是设扣命运的,有的人钓得差不多,有的人钓得少,我们几乎单稍伙伴当年还是圈在老版得《三国演义》长大的,特别仗义。因为发同年春天,桃园里之桃花盛开,我们偷来祖父的白酒,一人口割破手指滴上几滴血,大呼一词“不是同年同月生,但愿同年同月死。”然后端起掺血的酒,轮流着同总人口喝相同人数。其实自己吧从没喝,因为滴血的早晚,我其实不知晓怎么像电视一样的丁咬破手指,正好手指上助长的鸡眼在流血,就挤了几滴出来。鸡眼在我们本乡给作老鼠奶奶,据说是深受老鼠在目前撒了尿长出来的同种植乳状疙瘩。滴了这种血的酒喝了,那非是满载嘴的鸡眼啊,不过自己假装作喝了平等人口,他们反而是全喝了,也从没见嘴上长鸡眼,可见是坐勒索传讹,但是就桩事也给我不说了十大多年,现在推测,似乎良心上还小不安,还吓他们看不到。

既还是拜将分之弟兄,一修内裤大家一齐通过,一起钓的龙虾肯定使大家一起分,我们管每个人桶里的天虾都归置在一个桶里,让数学好的口当会计,那时候吧非会见除法,就相同人数平等仅地划分,分了为止,多出的那么几才本是归我了,因为我当里边是生,老大带在大家打天下,肯定有些功劳,那便大多让几单独,我当了如此多年杀,这种便宜没少捞。《三国演义》里之好是刘备,他是单白脸,但是我们同同台人里,钓龙虾钓上一个夏后,几乎都变成了关云长和张翼德。整个童年下,那就是是根本镀色了,所以自己事后以后重新为未尝白了,不过女对象白就是好了,这给黑白配。

事实上,钓龙虾还是一个很辛苦的生意,小孩子才打,大人要捕虾都直接去下地笼了,这是同栽渔具,在江南水乡很流行,几乎家家户户还起,三五米长,用蓝色之尼龙绳同样完完全全根地打起来,一截截的,可以抽,就如是龙脊一样,每一样截上且开了一个狭口洞,从他到内渐缩,里面放些诱饵,这样龙虾进去之后就是来不来了。下地笼一般都是傍晚趁着在龙黑下,也就是抛洒在历届里,很丰富好丰富平长达,把系口的肢体绑在水边的水草上,等到天明了,去收地笼,可谓是充分丰收,里头什么事物还产生,除了龙虾外,还有小鱼,螃蟹,黄鳝,甚至还来蚂蝗和蛇,所以清理地笼的上要小心点。

男女等把上虾提在桶里带回家了,之后的事情就是无由我们管了,操持厨房是妈妈娘子干的政工,就是中年妇女的意,但是本人就算好当一旁看正在友好之劳动成果变成餐桌及之充分美食,所以从小到深呢吃人喝了这个外号,挺冤枉的。在江南底村村落落,一到夏日,你就算会见发现家家户户门口都见面放平独红色的塑盆,盆里爬在大小不等的龙虾,它们于这头爬至那头,好不容易爬至盆檐处,又见面滑得下去,弄不好还有同伙将它们于夹下来,所以自己直接以为这种威风凛凛的虾将军很欢喜窝里搏杀,不团结,活该受人吃,但是它们其实是无与伦比好吃了,让丁需罢不可知。

妈妈家们端一摆放竹椅坐在吉盆边,北方人口爱不释手坐马扎,江南人喜欢坐竹椅,因为江南的竹比较多,江南丁活可以管竹子编成各种零部件,不仅椅子是竹椅编的,就连放拾掇好的龙虾也是竹篮。妇女们熟练地操纵起非法铁剪,剪刀上还有一行刻字,那时候张小泉很出名。她们避开虾螯,拿起龙虾,先拿虾头得要与两侧的壳给推了,因为那里是龙虾的鳃,用来了滤脏东西自然藏污纳垢,鳃壳一推,露出黄色的软液体物质就是虾黄了,跟蟹黄类似。剪了鳃壳,把上虾倒过来,拗住上虾的尾部,抽出一完完全全很丰富好丰富之沙线,黑色的,这到底东西还要吃作屎肠,顾名思义,就非需自家了多言说了,毕竟我们还要吃上虾呢。剪鳃拔线后底龙虾全部放大上了竹篮,这就是曾经办好了独具的备选干活,清洗龙虾应该在推龙虾之前,不然虾黄会被水给冲掉,很伤鲜味,讲究的家会就此同把竹刷来刷虾腹和虾脚,龙虾被雪得个个气宇轩昂,举着老大耳坠子嗷嗷叫,万万没有想到帮其洗完澡就会闷她的调皮。

瑞烧龙虾这宗手艺,但凡是江南小村的半边天肯定都使控制的,就比如他们还会织地笼一样。我这人自小到死,好吃懒做,吃得会吃的,而且嘴很挑,能说出几瓜分酸甜苦辣来,但是举行的话,也会见,不过大凡圈在他人做,自然也懂别人是怎开的,虽然自己要好非会见召开。我们处于苏皖接壤,是江苏之极端南缘,所以所被淮扬菜的影响非常有点,而偏于为徽菜。太湖流域的人头易吃甜点,尤其是苏锡常,那直是无糖不欢啊。“京口瓜洲一水间,钟山不过相隔数重山。”等及过了瓜洲,口味就非同等了,人们开始吃辣,我们便属于这同样替吃辣的,故使吃上虾的言语,都是辣小龙虾,食材遍地都是,烹调起来为略上亲手。

本身娘做麻辣小天虾就大以实践,淘箕里全好了捡拾掇好的龙虾,抽出案板,用菜刀将粗葱切根,生姜切块,大蒜切丁,干辣椒和花椒放在调碗里备用。油热后,把配料全然放上锅里,这个手续为作炒红,待炒到空气里都弥漫起幽香,就可以拿淘箕里的上虾放入锅中,武火爆炒,大炒只炒,这就得考验妇女们的腕力了。加入清水而不至于淹没龙虾,大火烧开,既使转文火慢炖,半钟功夫,适才炒香就全盘渗入龙虾了,此间还有加入茴香,大料和各种辣酱,入味入辣,芳香四溢。最后是为此大火收汁,把汤汁熬至适当分量,让香料全部渗入食材,而且产生留些许汤汁。出锅,盛放进白瓷盆里,把多余的汤汁往上虾上一致打,放上等同清葱,一道色香俱全的辛小天虾就到位了。

江南之农村做的还是比传统的,在淮扬菜系里面,他们非轻吃辣椒,不过偏偏爱吃粗龙虾,便烹调出同暂缓十三香龙虾,无非是加盟十三种香料,就是十三栽药材碾磨成粉,传统而言有紫蔻、砂仁、肉蔻、肉桂、丁香、花椒、大料、小茴香、木香、白芷、三奈、良姜、干姜等,各有每的妙处,茴香气味浓烈,白芷去膻气,肉桂可一旦肉香浓郁而休腻,陈皮以及木香又可汆汤。十三看好啊发生诸多配料,不一味只是一种植,一般还有草果、良姜、山奈、白芷、小茴香、丁香、香叶、八角、砂仁、排香、桂皮、孜然、白蔻等。十三热是河南口表的,十三红龙虾却是盱眙的,这个地名很有声望,但凡说打多少龙虾,肯定使谈盱眙龙虾,这即像说从螃蟹,肯定使讲阳澄湖河蟹和固城湖螃蟹同。

当自身现在需之南京城,一到夏日,全都会满带镇是略龙虾,南京有一致句很有名的口头语,你去吃混沌,摊子老板先是词话肯定是,“啊要辣油啊。”可见南京丁是欣赏吃烟的,不过口味也很常见的,卖的最为恼火的当属十三热点龙虾,麻辣龙虾和蒜泥龙虾。街头的龙虾店也大多而加盱眙两只字,貌似离了盱眙就无是龙虾了,一个个都说自己是绝正宗的盱眙龙虾,然后同开口又是不错的南京腔调,甚至是川音,反正天底下的饭店便属川菜馆最多。小龙虾同啤酒是南京夏之极度容易,因为有点天虾吃起没累,随便吃,不像螃蟹同,那么值钱一单纯,都舍不得吃。吃粗龙虾的下,我们都直接下毛手,也未带来手套,直接开剥,先把尾巴给吃了,然后深吸一口头里的虾黄,很多人只是吃虾尾巴而将条为拧了扔,说是里面脏,怪可惜的,我却觉得那里是极度美味的。

本人偏偏吃辛辣小龙虾,那是苏皖交接地区的江南口味,小天虾鲜辣得吃人不禁吸吮手指头,有些人还是吃得过分投入,把手指也吃轧掉了。不一会,桌上就堆放积得像座小山包,又辣又爽朗,叫丁索要罢不可知。辣了怎么惩罚,当然是喝啤酒了,南京市场之啤酒自然是白雪最多,虽然我嫌其味淡,但是冰镇啤酒一灌输,立马会把口腹里那么点辣味了浇灭,舌蕾清爽,顿时满血复活,“老板,再来五斤麻辣小龙虾,多放辣。”你看吧,这即是南京的夏日,一个皆吃龙虾和啤酒占领的市时,南京总人口合在啤酒池子里游抓天虾。

用作一个饕客,天南海打败的虾子吃得实际够多矣,到了海边要吃澳龙,两斤一个,也未曾小肉,吃得不惬意,对虾子也是海里的,水烧清蒸,不过这游戏了雌雄同体。相比较海里的虾,我也钟情于湖鲜,江南的湖泊池塘里出青虾,双螯细长,从齐白石的绘画里爬了出,我妈妈一直做让自身吃,只需要和煮方几片姜,蘸醋,我平暂停能吃等同斤,然后身上过敏,手脚奇痒。平常之有点虾,湖边可以抓到,拿东西还为此来举行了豆瓣酱,江南的居家,家家户户还见面调制鲜虾酱,特别方便下饭,近几年之金菜地牌鲜虾酱就老大吻合本人口味,但是自还是好我母亲做的,那种味道永远最纯粹。

是,夏天,自然要如吃多少龙虾的,我起一个同桌,一直喊我出吃多少天虾喝啤酒,每次让自身打电话,“哥,今天夜间被大将起啊。”这种笑话真的慌常见,因为我们这里的人数,读字爱读半边,盱眙就变成了让令,你看多接地气。到了有些餐饮店,大吃同名誉,“老板,来十斤正宗给贵小天虾。”

2015.7.10深受南京秣陵

�������8�����

1、Redis基础和安装

Redis是一个开源之动ANSI
C语言编写、支持网络、可依据内存亦可持久化的日志型、Key-Value数据库,和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted
set
–有序集合)和hash(哈希类型)。在是基础及,redis支持各种不同措施的排序。与memcached一样,为了保证效率,数据都是休息存在内存中。区别的凡redis会周期性的拿创新的数据形容副磁盘或者把修改操作写副追加的笔录文件,并且于这基础及贯彻了master-slave(主从)同步。

Redis的代码遵循ANSI-C编写,可以于富有POSIX系统(如Linux, *BSD, Mac OS
X,
Solaris等)上安装运行。而且Redis并无依靠任何不标准库,也尚未编译参数必需添加。

1)Redis支持有限种持久化方式:

 
 (1):snapshotting(快照)也是默认方式.(把数量做一个备份,将数据存储到文件)

   (2)Append-only file(缩写aof)的方式 

 
 快照是默认的持久化方式,这种措施是拿内存中数据因快照的点子写到二进制文件被,默认的文件名称为dump.rdb.可以通过安排安装自动开快照持久化的章程。我们得安排redis在n秒内要跨越m个key键修改就自动做快照.

 
 aof方式:由于快照方式是于自然间隔时间做同样浅的,所以若Redis意外down掉的口舌,就见面掉最后一糟快照后的装有修改。aof比快照方式发出再次好的持久化性,是由于在采用aof时,redis会将各国一个接到的状命令还通过write函数追加到文件中,当redis重开时见面经还履行文书被保存之形容命令来以内存中重建总体数据库的内容。 

2)Redis数据结构

Redis 的作者antirez就称其也一个数据结构服务器(data structures
server
),这是一个很准确的抒发,Redis的兼具力量就是以数据以那个固有之几种植结构保留,并提供于用户操作就几乎种结构的接口。我们可以想象我们在各种语言中之那些原本数据类型及其操作。

Redis目前提供四种植多少列:string,list,setzset(sorted
set)和Hash

  • string凡最好简便的类,你可以知道成与Memcached一型一个之型,一个key对应一个value,其达成支撑之操作与Memcached的操作看似。但其的效力更丰富。
  • list大凡一个链表结构,主要作用是push、pop、获取一个限制的所有值等等。操作着key理解吧链表的名。
  • set举凡集聚,和我们数学中之聚合概念一般,对聚集的操作发生长去元素,有对大多只集聚合求交并差等操作。操作中key理解为汇的讳。
  • zset是set的一个升任版本,他以set的底子及增加了一个逐个属性,这无异于性质在抬高修改元素的时可以指定,每次指定后,zset会活动重新以新的值调整顺序。可以解了生星星点点排列的mysql表,一排存value,一排存顺序。操作着key理解吧zset的名字。
  • Hash数据类型允许用户用Redis存储对象类型,Hash数据类型的一个要害亮点是,当你存储的多少对象只是来老少几独key值时,数据存储的内存消耗会那个小.更多关于Hash数据类型的征请见: http://code.google.com/p/redis/wiki/Hashes

3)Redis数据存储

Redis的囤分为内存存储、磁盘存储和log文件三局部,配置文件中产生三只参数对其开展布置。

save seconds
updates
save部署,指出在多长时间内,有微微次创新操作,就拿数据并到数据文件。这个可基本上个条件相当,比如默认配置文件被之安,就安装了三独标准化。

appendonly
yes
/no appendonly布置,指出是否当历次换代操作后展开日志记录,如果未开,可能会见以断电时造成一段时间内的数额丢失。因为redis本身并数据文件是依照上面的save条件来一块的,所以有数据会在一段时间内只有设有让内存中。

appendfsync
no
/always/everysec appendfsync配置,no表示等操作系统进行多少缓存同步到磁盘,always意味着每次换代操作后手动调用fsync()将数据勾勒及磁盘,everysec意味着每秒同步同糟。

 

4)Redis的安装

Redis可以于不同的阳台运行,不过我最主要因Windows进行开工作,所以下要是依据Windows平台进行介绍。

Redis可以装为DOS窗口启动的,也可以安装为Windows服务之,一般以方便,我们重愿管其装为Windows服务,这样可以于方便管理。下载地址:https://github.com/MSOpenTech/redis/releases下载,安装也Windows服务即可。

即得以下载到新型的Windows安装版本也3.0,安装后当做Windows服务运行,安装后可以当网的劳务之中看到Redis的劳动在运转了,如下图所展示。

数学 1

装好Redis后,还有一个Redis伴侣Redis Desktop
Manager需要设置,这样好实时查看Redis缓存里面来怎样数据,具体地址如下:http://redisdesktop.com/download

下载属于自己平台的版即可

数学 2

下载安装后,打开运行界面,如果我们往里上加键值的多寡,那么可观看中的数据了。

数学 3

 

2、Redis的C#使用

Redis目前提供四种多少列:string,list,setzset(sorted
set)和Hash。数学因此其当C#内也时有发生照应的包处理,而且产生众多总人口对他进行了包装,提供了成百上千底响应开发包,具体可以拜http://redis.io/clients#c
进行问询。一般建议用ServiceStack.Redis的卷入驱动比较好,具体的下可以参见https://github.com/ServiceStack/ServiceStack.Redis。

咱开发C#代码的下,可以当NuGet程序包者进行添加对应之ServiceStack.Redis引用,如下所示。

数学 4

 

于弹出的NuGet程序包中,输入ServiceStack.Redis进行搜,并丰富下面的教引用即可。

数学 5

这般见面在列援里面加加了几乎独照应的程序集,如下所示。

数学 6

在C#中用Redis,首先用实例化一个Redis的客户端类,如下所示。

        //创建一个Redis的客户端类
        RedisClient client = new RedisClient("127.0.0.1", 6379);

在采取前,我们得清空所有的键值存储,使用FushAll方法即可,如下所示

            //Redis FlushAll 命令用于清空整个 Redis 服务器的数据(删除所有数据库的所有 key )。 
            client.FlushAll();

根据上面的驱动,可以吗歧类型的拍卖编写一些示范代码,下面代码是摘录网上的案例开展介绍。

            #region string类型的测试代码

            client.Add<string>("StringValueTime", "带有有效期的字符串", DateTime.Now.AddMilliseconds(10000));

            while (true)
            {
                if (client.ContainsKey("StringValueTime"))
                {
                    Console.WriteLine("String.键:StringValue, 值:{0} {1}", client.Get<string>("StringValueTime"), DateTime.Now);
                    Thread.Sleep(10000);
                }
                else
                {
                    Console.WriteLine("键:StringValue, 值:已过期 {0}", DateTime.Now);
                    break;
                }
            }

            client.Add<string>("StringValue", " String和Memcached操作方法差不多");
            Console.WriteLine("数据类型为:String.键:StringValue, 值:{0}", client.Get<string>("StringValue"));

            Student stud = new Student() { id = "1001", name = "李四" };
            client.Add<Student>("StringEntity", stud);
            Student Get_stud = client.Get<Student>("StringEntity");
            Console.WriteLine("数据类型为:String.键:StringEntity, 值:{0} {1}", Get_stud.id, Get_stud.name);
            #endregion

            #region Hash类型的测试代码

            client.SetEntryInHash("HashID", "Name", "张三");
            client.SetEntryInHash("HashID", "Age", "24");
            client.SetEntryInHash("HashID", "Sex", "男");
            client.SetEntryInHash("HashID", "Address", "上海市XX号XX室");

            List<string> HaskKey = client.GetHashKeys("HashID");
            foreach (string key in HaskKey)
            {
                Console.WriteLine("HashID--Key:{0}", key);
            }

            List<string> HaskValue = client.GetHashValues("HashID");
            foreach (string value in HaskValue)
            {
                Console.WriteLine("HashID--Value:{0}", value);
            }

            List<string> AllKey = client.GetAllKeys(); //获取所有的key。
            foreach (string Key in AllKey)
            {
                Console.WriteLine("AllKey--Key:{0}", Key);
            }
            #endregion

            #region List类型的测试代码
            /*
             * list是一个链表结构,主要功能是push,pop,获取一个范围的所有的值等,操作中key理解为链表名字。 
             * Redis的list类型其实就是一个每个子元素都是string类型的双向链表。我们可以通过push,pop操作从链表的头部或者尾部添加删除元素,
             * 这样list既可以作为栈,又可以作为队列。Redis list的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销,
             * Redis内部的很多实现,包括发送缓冲队列等也都是用的这个数据结构 
             */
            client.EnqueueItemOnList("QueueListId", "1.张三");  //入队
            client.EnqueueItemOnList("QueueListId", "2.张四");
            client.EnqueueItemOnList("QueueListId", "3.王五");
            client.EnqueueItemOnList("QueueListId", "4.王麻子");
            long q = client.GetListCount("QueueListId");

            Console.WriteLine(client.GetItemFromList("QueueListId", 0));
            for (int i = 0; i < q; i++)
            {
                Console.WriteLine("QueueListId出队值:{0}", client.DequeueItemFromList("QueueListId"));   //出队(队列先进先出)
            }

            q = client.GetListCount("QueueListId");
            Console.WriteLine(q);

            client.PushItemToList("StackListId", "1.张三");  //入栈
            client.PushItemToList("StackListId", "2.张四");
            client.PushItemToList("StackListId", "3.王五");
            client.PushItemToList("StackListId", "4.王麻子");
            long p = client.GetListCount("StackListId");
            for (int i = 0; i < p; i++)
            {
                Console.WriteLine("StackListId出栈值:{0}", client.PopItemFromList("StackListId"));   //出栈(栈先进后出)
            }
            q = client.GetListCount("StackListId");
            Console.WriteLine(q);

            #endregion

            #region Set无序集合的测试代码
            /*
             它是string类型的无序集合。set是通过hash table实现的,添加,删除和查找,对集合我们可以取并集,交集,差集
             */
            client.AddItemToSet("Set1001", "小A");
            client.AddItemToSet("Set1001", "小B");
            client.AddItemToSet("Set1001", "小C");
            client.AddItemToSet("Set1001", "小D");
            HashSet<string> hastsetA = client.GetAllItemsFromSet("Set1001");
            foreach (string item in hastsetA)
            {
                Console.WriteLine("Set无序集合ValueA:{0}", item); //出来的结果是无须的
            }

            client.AddItemToSet("Set1002", "小K");
            client.AddItemToSet("Set1002", "小C");
            client.AddItemToSet("Set1002", "小A");
            client.AddItemToSet("Set1002", "小J");
            HashSet<string> hastsetB = client.GetAllItemsFromSet("Set1002");
            foreach (string item in hastsetB)
            {
                Console.WriteLine("Set无序集合ValueB:{0}", item); //出来的结果是无须的
            }

            HashSet<string> hashUnion = client.GetUnionFromSets(new string[] { "Set1001", "Set1002" });
            foreach (string item in hashUnion)
            {
                Console.WriteLine("求Set1001和Set1002的并集:{0}", item); //并集
            }

            HashSet<string> hashG = client.GetIntersectFromSets(new string[] { "Set1001", "Set1002" });
            foreach (string item in hashG)
            {
                Console.WriteLine("求Set1001和Set1002的交集:{0}", item);  //交集
            }

            HashSet<string> hashD = client.GetDifferencesFromSet("Set1001", new string[] { "Set1002" });  //[返回存在于第一个集合,但是不存在于其他集合的数据。差集]
            foreach (string item in hashD)
            {
                Console.WriteLine("求Set1001和Set1002的差集:{0}", item);  //差集
            }

            #endregion

            #region  SetSorted 有序集合的测试代码
            /*
             sorted set 是set的一个升级版本,它在set的基础上增加了一个顺序的属性,这一属性在添加修改.元素的时候可以指定,
             * 每次指定后,zset(表示有序集合)会自动重新按新的值调整顺序。可以理解为有列的表,一列存 value,一列存顺序。操作中key理解为zset的名字.
             */
            client.AddItemToSortedSet("SetSorted1001", "1.刘仔");
            client.AddItemToSortedSet("SetSorted1001", "2.星仔");
            client.AddItemToSortedSet("SetSorted1001", "3.猪仔");
            List<string> listSetSorted = client.GetAllItemsFromSortedSet("SetSorted1001");
            foreach (string item in listSetSorted)
            {
                Console.WriteLine("SetSorted有序集合{0}", item);
            }
            #endregion

对此具体品种的好像对象,也可以使用As方法开展转换为对应之处理对象进行拍卖,如下所示

IRedisTypedClient<Phone> phones = client.As<Phone>();

具体的测试代码如下所示。

        /// <summary>
        /// Redis对对象类的处理例子
        /// </summary>
        private void btnTypeValue_Click(object sender, EventArgs e)
        {
            IRedisTypedClient<Phone> phones = client.As<Phone>();
            Phone phoneFive = phones.GetValue("5");
            if (phoneFive == null)
            {
                Thread.Sleep(50);
                phoneFive = new Phone
                {
                    Id = 5,
                    Manufacturer = "Apple",
                    Model = "xxxxx",
                    Owner = new Person
                    {
                        Id = 1,
                        Age = 100,
                        Name = "伍华聪",
                        Profession = "计算机",
                        Surname = "wuhuacong"
                    }
                };

                phones.SetEntry(phoneFive.Id.ToString(), phoneFive);
            }

            client.Store<Phone>(
                new Phone
                {
                    Id = 2,
                    Manufacturer = "LG",
                    Model = "test-xxx",
                    Owner = new Person
                    {
                        Id = 2,
                        Age = 40,
                        Name = "test",
                        Profession = "teacher",
                        Surname = "wuhuacong"
                    }
                });

            var message = "Phone model is " + phoneFive.Manufacturer + ",";
            message += "Phone Owner Name is: " + phoneFive.Owner.Name;
            Console.WriteLine(message);
        }

如上就是有关Redis的安和简单的例证使用说明,在具体中,我们可下Redis的大性能特点,来构建我们的缓存数据,并且可以使用Redis和MongoDB数据库的面面俱到衔接,可以组合并做的又好,为相关的后台提供更迅速之数码处理操作,毕竟在互联网的老条件下,性能是挺重大的。

 

相关文章

No Comments, Be The First!
近期评论
    分类目录
    功能
    网站地图xml地图