校园贷这少儿超能宝就是个大坑坑,要怎样才能跳出来

更多公众号:jiaoxuns我不会告诉你怎么成功,但我会告诉你因何失败!最新文章相关推荐搜狗:感谢您阅读众包物流这个坑,京东跳出来了,达达陷进去了!,本文可能来自网络,如果侵犯了您的相关权益,请联系管理员。QQ:诺奖如何跳出“欧洲中心”这个坑
[摘要]“我们是欧洲的一部分,受到的文化熏陶也是欧洲的,‘欧洲中心化’肯定是难免的。我们努力尝试跳出去(带点沮丧地“啊”了一声)那真不容易。”【编者按】10月,当今世界最重要的文学奖项——诺贝尔文学奖,将揭晓最后结果。文学奖应该怎么办?如何保证公开透明,评出经得起时间考验的优秀作品?文学奖的演变与世界各国语言、文学乃至社会变迁有着怎样的深层关联?针对上述问题,腾讯文化对诺贝尔文学奖、英国布克奖、日本芥川直木奖、法国龚古尔奖、美国国家图书奖等世界著名文学奖项的负责人或前负责人进行了深度访谈,此为第六篇:腾讯文化 张璐诗 发自瑞典斯德哥尔摩斯德哥尔摩股票交易大楼股票交易所 拍摄:张璐诗斯德哥尔摩股票交易大楼股票交易所已经有两百多年历史了。这里的二层,就是诺奖大厅。从1895年开始,每年10月上旬的某个星期四,世界各地的媒体都会在此济济一堂,等待瑞典学院的常任秘书长打开门,公布新一届诺贝尔文学奖的得主。霍拉斯·恩格道尔在一次瑞典学院的新闻发布会上瑞典学院负责颁发诺贝尔文学奖,瑞典学院常任秘书长是诺贝尔文学奖评奖时最具实权的职位。瑞典学院院士霍拉斯·恩格道尔(Horace Engdahl)曾任这一职位长达10年之久。因为劳累过度,他于2009年请辞该职,但他仍是诺贝尔文学奖委员会的5位核心小组成员之一。在每年10月颁布结果的诺贝尔文学奖评选过程中,霍拉斯的阅读趣味与选择至关重要。日,腾讯文化作者在斯德哥尔摩对霍拉斯进行了专访。他对腾讯文化详细介绍了诺贝尔文学奖评选的规则与过程、院士评委们的工作方式,披露了评奖的关键步骤;同时解答了诺贝尔文学奖“是否有‘欧洲中心化’倾向”“评奖是否考虑政治因素”等问题。以下为腾讯文化与霍拉斯的对话。诺奖评委的责任大到令人崩溃接受腾讯文化采访时的霍拉斯 拍摄:张璐诗腾讯文化:瑞典学院创办于18世纪,主要责任是保持瑞典语言的纯正性。当选瑞典学院院士需要哪些基本资格?霍拉斯:需要有文化和文学功底,必须能清晰流利地使用瑞典语,毕竟这是瑞典国家级学院。合起来,所有的院士大概能通晓10门语言,覆盖面还可以,这对我们很有帮助。比如说,我们有汉学家马悦然,可以向我们解释中国文学里我们很难读懂的地方——他如今90岁了,但依然很活跃。我们还有精通俄语、西班牙语、葡萄牙语的院士。除了英文,我也懂意大利语、德语和法语。我们还有一位冰岛语专家。上世纪四十年代到六十年代之间,我们曾经有一位通晓所有阿拉伯语言的院士。腾讯文化:瑞典学院是瑞典的国家级学院,却负责备受世界瞩目的奖项的评选。你们的压力一定不少吧?霍拉斯:确实会有压力。作为单个国家的学院机构,你无法覆盖世界各国的语言文字,面面俱到。今天全世界主要的语言有三十多种,而我们只有18位院士。我们只能通过翻译等其他办法来改善这一情况。有时我们会有专门为瑞典学院印制的译本。如果读译本都无法理解,我们会私底下举办小型工作坊,请各国的权威学者和译者写来报告,帮助我们理解和对比翻译与原著的差异。总而言之,我们需要有相当高的能力,能通过文字(包括翻译文字)去鉴赏作品的文学质量,这是最关键的。我们半辈子都在做这件事。我能够通过北欧语言、德语、法语去做文学鉴赏,也许还包括意大利语,但我不敢百分百肯定。我们只能希望通过瑞典学院各位院士的团队合作,不至于闹出笑话来。腾讯文化:世界各国的许多作家都将诺贝尔文学奖视为最高的文学认可。作为局内人,你认为诺贝尔文学奖对于世界文坛有多重要?霍拉斯:我在担任常任秘书长的10年里,对世界各国的文学状况做过一些调查。我也尝试去调查诺奖历年来对于世界文坛的影响,因为在某个文学趋势起落时,诺奖的重要性和权威性也会随之起落。我得出的结果有点吓人:诺奖的影响力实际上在逐年上升,权威性也在逐年增加。这就意味着所有的目光都聚焦在我们身上。50年前,全球化还没开始,只有小部分人把诺贝尔奖当真,当时欣赏文学作品还需要有相当的社会条件,而当今我们有整个文学市场,读者数量今非昔比。从这个层面上看,作为诺奖的评委会成员,责任是能令人崩溃的。我们不能想太多,否则这工作没法干下去了。腾讯文化:诺奖评委的责任都有哪些?霍拉斯:我们得想方设法把自己的工作做好。首先我们得明白,诺贝尔基金会是这个奖项的基础,我们没办法绕开。当年诺贝尔本人说得很清楚,他指明要瑞典学院去选出奖项得主。这一点是不可能改变的。因此只有两条路:把诺奖废了,或者继续下去。我们没办法将工作转移给别家。其次,当年由瑞典国王(注:古斯塔夫三世)钦定的瑞典学院的组成也不能更改,国王当年指明就要18位院士,不能多也不能少。因为他认为在瑞典语里,由三个音节组成的“18”的发音最漂亮。这奖也必须在斯德哥尔摩评选。这些都是奖项基础。“陪跑”多年的诺奖大热门村上春树没有作家第一次进入候选名单就得奖腾讯文化:诺奖的基金组成是怎样的?霍拉斯:最开始税很重,基金因此增长得很慢。大概从1964年开始,基金免税了,基金会的发展开始稳定。目前基金会运转良好,在可预见的未来,评奖估计能持续下去。我们一直在思考怎么优化评奖过程,但实际上,我们已经拥有了最顶级的资源和帮助:我们与世界各国最优秀的学者和专家保持联系(他们一般是大学教授或书评人),请他们定期写各项专业报告,我们会一一备案。此外,我们自己会做大量阅读。英文里有一句谚语:“The proof of the cake is in the eating.”(“吃过之后才知道蛋糕好不好。”)除了自己去把书都读一遍,没有更好的鉴别作家的方法。读完以后,我们需要凑到一起讨论,将所有的信息和知识重新梳理和循环一遍,决定哪位作家的文学水平更高。这个过程进行得非常缓慢。我们会反复去阅读同一部作品。私底下,我们有一个默认的规则:没有人第一次进入候选名单就得奖。得奖作家至少要两次进入候选名单。我们要对每一位作家的新作、旧作,以及他修订过的旧作读了又读。我该怎么去形容呢——几乎像在做有机栽培那样,慢慢来,静观其变。腾讯文化:大概需要读多少本书?霍拉斯:数不清。一般来说,我先要飞快地速读一堆书,然后慢慢找到节奏,细读进入候选名单的每一本书。以全年来计算的话,我每年都要读几百本书。在一个评奖季里,我“慢读”的书籍大概有50本。这是因为在评奖的最后阶段,假如最终入围名单只剩下5位作家的话,其中3位的作品你一般都烂熟于心了,因为他们已经不止一次入围。剩下的2位“新人”,每位你得读20本以上的书。每年瑞典学院开放到5月底就关门休息,6月到8月的整个夏天里,我们都在读书。腾讯文化:瑞典学院的院士是不是还有一个避暑大宅?霍拉斯:曾经的瑞典学院院士、后来的联合国秘书长哈马舍尔德在瑞典南部有一幢房子,我们曾经去那里过夏天。可惜房子太老,现在已经不能住人。不过我们在瑞典南部另外有个岛,供院士们安静地看书。但我们一般都自己另找地方待着,什么都不干,就是静静地阅读。那真算不上是度假,可是很有意思。没有什么比阅读更好的消遣了。我们努力尝试从“欧洲中心”跳出去腾讯文化:瑞典学院和诺贝尔文学奖委员会之间是什么关系,怎么分工?霍拉斯:诺贝尔文学奖委员会隶属于瑞典学院,一般由5到6个院士组成,并在瑞典学院的框架之内工作。腾讯文化:诺贝尔文学奖委员会的成员是怎么选出来的?霍拉斯:瑞典学院决定哪几位院士在文学领域最优秀,最有资格进入这个委员会。在瑞典学院里,有两个基础而重要的委员会,一个是诺贝尔文学奖委员会,另一个是瑞典语言委员会。后者专注于修订瑞典语辞典。瑞典学院还有一个新文学委员会,主要关注新一代的作家;有一个专门负责纪实写作的纪实文学委员会。此外,我们还设有一个行政委员会,负责评奖的各项事务。腾讯文化:诺贝尔文学奖委员会的主席是终身制的吗?他的职能与瑞典学院的常任秘书长有何不同?霍拉斯:主席不是终身制的,任职时间从5年到15年不等。主席的工作量比委员会别的成员都要大,需要在瑞典学院院士面前述职,报告诺奖委员会的工作进展。但实际上,主席的权力并不比委员会里的成员大。委员会的主席在瑞典学院之外并没有实权,我们也不主张他直接与公众交流。常任秘书长是瑞典学院对外惟一的发言人,宣布诺奖得主、接受媒体采访的也是常任秘书长。腾讯文化:你在担任10年瑞典学院常任秘书长后辞职,就是像报道说的那样,是因为太累了吗?霍拉斯:真的没有别的原因了。当常任秘书长的工作量实在太大,责任也太重,而且时刻都在媒体的眼皮底下。人在这个职位能撑20年就非常了不起了。2015年6月新上任的瑞典学院常任秘书长Sara Danius腾讯文化:今年6月,瑞典学院新一届常任秘书长萨拉·丹尼尔斯(Sara Danius)就任。请为中国读者介绍一下她。瑞典学院新上任常任秘书长Sara Danius霍拉斯:萨拉是瑞典学院成立以来的第一位女性常任秘书长,这是个历史性的时刻。我和上一任常任秘书长彼得·恩格隆德都很支持她当选。萨拉是去年瑞典学院的院士们投票选出来的。她曾是斯德哥尔摩大学的比较文学系教授,有博士学位,是学识丰富的批评家和历史学者。早年她还当过记者,给报刊写过大量报道,也写散文。她的博士论文题目是研究普鲁斯特和托马斯·曼对现代科技文化的影响。她可聪明了,精通英语、法语、德语。腾讯文化:又是一位欧洲文学的专家——多年来,诺贝尔文学奖的“欧洲中心化”一直为媒体所热议。你怎么看?霍拉斯:我们是欧洲的一部分,受到的文化熏陶也是欧洲的,“欧洲中心化”肯定是难免的。我们努力尝试跳出去(带点沮丧地“啊”了一声)那真不容易。首先语言就是个问题,也许将来会有变化。不过,对比50年前作风老派的瑞典学院,今天的诺奖评选已经不算极端“欧洲中心化”了。总之,我们在努力拓宽视野。尽力将政治因素排除在外腾讯文化:诺贝尔文学奖评选是否会考虑政治因素?霍拉斯:我们尽力将政治因素排除在外,我想还算成功,因为在瑞典学院的会议里,我们从不谈及政治。但话说回来,尽管阿尔弗雷德·诺贝尔本人强调“理想”与“和平”,但我们将政治因素排除开后选出的诺奖候选人,如果与一些极端运动有瓜葛,或者发表了一些与他们的文学创作观点相左的政治宣言,就会比较麻烦。当然,这样的情形非常罕见。换句话说,逼不得已时,我们也是需要将政治因素考虑在内的,但我们尽可能将这种可能性减到最低。有时候我们也会遭到批评。莫言得诺奖,我们就遭到了一些媒体的批评。奥地利女作家耶利内克,备受争议的一届诺奖得主腾讯文化:在你的记忆中,有没有备受争议的得奖者?2004年诺贝尔文学奖得主耶利内克似乎是一个例子。霍拉斯:对耶利内克当选发出反对声音的,是瑞典学院内部一位自1996年就没有参与任何常规会议和活动的院士。他其实是对瑞典学院的其他事务有意见,结果把气撒到了耶利内克身上,做了一次秀。根据瑞典学院的规则,决定一旦下达,也就成为了事实,就算有院士不同意,也不得向外抱怨。这一点挺重要的,否则这奖没法评了。实际上,这也是一种心理游戏,当结果出来以后,大家都默认了决定,过了一段时间,大家都自然淡忘了投票的过程。比方说,我现在回想,基本想不起来我当年有没有投君特·格拉斯一票了。你明白我的意思吧?每个成员都是诺奖委员会的一分子,我们都是一体的。每个人有责任去捍卫是既成事实的决定。当然了,耶利内克本身就是个备受争议的作家,欧洲许多专业人士觉得我们选她是疯掉了。但也有许多人认为我们非常勇敢。腾讯文化:瑞典院士每周都要开会?霍拉斯:冬季,也就是每年9月到第二年的5月之间,除去圣诞节和新年的两周假期,我们每周四开一次例会。诺奖委员会当然需要进行多次碰头,做严谨的讨论;瑞典学院的18位院士也不能闲着,大家都要拼命读书。诺奖是9、10月会议上的重点,但除了诺奖,我们其实还有很多别的事要讨论。比如全年里我们要给瑞典作家颁出六十多项文学奖,这么一算,平均每周我们都要评两个奖项。在这期间我们还得阅读大量的瑞典图书。除此之外,我们经常收到大量作家或相关机构的基金申请,因为瑞典学院有一个支持文学创作的项目。所以每周四开会的时候,我们平均需要讨论大约15个题目。腾讯文化:然后你们会去对面的老饭馆里聚餐,风雨不改?霍拉斯:对。每周例会后,我们都到从1722年开业至今的“金色和平”(Den Gyldene Freden)老饭店去吃饭。二楼有一个瑞典学院专用的房间,你会看到靠墙的玻璃柜子里放着18个盛烈酒的小酒杯,每个杯子上都刻有编号。这是我们每个院士的专用酒杯。酒杯一旁的柜子里有个古董,是18世纪留下来的一把鲁特琴。本文系腾讯文化独家稿件,未经授权,不得转载,否则将追究法律责任。
正文已结束,您可以按alt+4进行评论
相关阅读:
相关搜索:
看过本文的人还看了
每日微信 | 如果爱打牌的胡适也有朋友圈
新文化运动领袖胡适一度痴迷打牌你信么?不信就一起围观胡适的“朋友圈”吧。
←扫我订阅腾讯文化,每天至少一篇品味文章,让你的生活更充实
[责任编辑:katrinachen]
热门搜索:
Copyright & 1998 - 2017 Tencent. All Rights Reserved装修污染这个坑
学校如何才能跳过去_新浪家居
装修污染这个坑
学校如何才能跳过去
摘要:对大多家长来讲,如果没有持续发生的装修污染导致学生患病新闻曝出,可能永远都无法将甲醛、苯、VOC等污染与学校联系起来。
从未想到,学校竟然掉入装修污染这个坑。
这次教育系统面临的挑战,丝毫不比就近择校、教育资源均衡、减负、小升初、奥数加分等问题轻松。
对大多家长来讲,如果没有持续发生的装修污染导致学生患病新闻曝出,可能永远都无法将甲醛、苯、VOC等污染与学校联系起来。
但现实的残酷性已超出一般想像,成都郫县犀浦镇的天骄幼儿园,因甲醛超标导致70多名幼儿被毒;深圳福田区园岭外国语小学,1000多家长联名上书,要求学校延迟开学,质疑新装修教室甲醛超标;河南孟寸育才小学,新装修教学楼,3000多名小学生开学入校后几天就发生各种不良反应,起因均指向装修污染。
要想成功跳过这个坑,学校还有很多工作要完成。至少,管理者先要培养起环保精神,派出具备专业水平的负责人,并且采用一套成熟的施工监管机制。最近广为流传的桂林市旅游职业中等专业学校翻新装修案例,提供了相当典型的案例。
有没有一种环保的精神与观念
这个话题看起来很宏观,但如果对一名环保主义者来讲,它非常细致。
在微博、微信、BBS等社交媒体上,很少有学校装修这种话题的讨论,更没有上头条的可能。自然,也缺乏拥有足够影响力的新闻媒体进行报道。
传统认识中,学校装修并不成为难点,以墙面装修为例,只要将涂料的招标完成,有现成的国家标准作为依据,施工做到相对平整就可以满足要求。
如果按照这种认识水平,去处理一所现代学校的装修,已经难以实现相对圆满的结局。频发的甲醛污染事件,最深层的原因应该归咎于传统观念的作祟,在大气污染相当严重的情况下,学校的墙地面装修都属于大面积施工,以墙面涂料为例,假如在甲醛、VOC,或者苯系物等有害物指标上,控制不够严格,就可能造成非常严重的污染问题。
(桂林市旅游职业中等专业学校翻新中的教学楼)
即使按国家标准招标,施工后的室内空气质量,也并不一定就能达标。这也是越来越多的学校优先选择干粉涂料()这种零污染环保涂料的原因,最近备受关注的荷仕达中标桂林市旅游职业中等专业学校立面改造工程,被教育界与装修界视为典范。
有人提出了这样的疑问,为什么以前的涂料、课桌椅并没有更高的环保性能,却没有发生因装修污染致病的案例?原因其实很简单,信息传播的封闭、检测手段的落后,以及大气环境相对较好,使得室内污染的严重性并不突出。
在装修这件事情上,学校的专业水平在什么层次?
经历这一轮连续发生的学校装修污染事件,专业的重要性才体现出来。可以这样讲,装修这件事情,学校专业水平的高低,在一定程度上决定了最终的质量。缺乏这点,其实是无根之木,无源之水。
试想,不懂各种装修材料的环保指标,不懂国内外标准的差别,不懂该如何抽检进场的实际材料,甚至不懂各种辅料的环保情况,那么,学校装修的环保从何而来?
仅以墙面材料为例,涉及指标就多达十数项,包括游离甲醛、苯与二甲苯等苯系物、VOC、铅汞、耐擦洗等指标,通行的检测机构也有多家,比如国家建筑材料测试中心、国家涂料质量监督检验中心等正规机构,以及大量不知名,甚至缺乏合格资质的检测单位,到底如何采信,并非易事。
走访发现,已经有学校提高了施工项目组的专业层次,引进独立的第三方监理,并且确定了材料检测单位的范围。来自一位业内人士的消息,桂林市旅游职业中等专业学校在今年翻新教学楼与学生宿舍时,成立的项目组中引进了专门的技术负责人,用于评估竞标品牌的质量。
施工监管的时代到来
任何事情,如果缺乏严谨及时的过程监管,最终的结果都很难变好。学校装修的要求更高,有没有一套施工监管的动态机制,有没有具体落实的责任人,关乎成败。
(荷仕达专配空气检测仪器)
记者拿到的一份资料显示,荷仕达干粉涂料()为桂林市旅游职业中等专业学校制定的零污染施工计划中,与监管有关的内容就多达数条,最有震撼力的无疑是这样两点:从施工启动到施工完成,全程配备3台西西空气检测仪器,动态监测室内空气质量的变化,监测指标包括甲醛、PM2.5等。
按照资深装修人士的经验,学校这种特殊公共场所的监管,应该比住宅、写字楼等普通民用建筑更严才行,仅依靠《民用建筑工程室内环境污染控制规范》及《室内空气质量标准》这样的通用规范,是不适合的。
原因何在?该人士分析认为,主要有三点,学校独立空间的施工面积大,容易造成有害物累积;通风时间往往都很短,也缺乏绿植与其它吸附材料的配备;人流量密集,而且学生年纪较小,免疫力相对成人较差,在室内的时间又过长,很容易遭遇有害物侵袭。
我们都在强调让孩子不输在起跑线上,而装修污染这个坑,冷不防拌了多少家庭一大跤,是时候采取行动,还孩子们一个正常的学习与生活天地。
(了解更多环保健康装修及家居搭配指南,请关注荷仕达干粉涂料微信公众号(ID:meihetuliao),或扫码关注,获取粉丝专享福利,你身边的环保装修与健康家居情报站。)
声明:新浪网登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
电话:400-606-6969
精品样板间
获取动态密码
精选30多万张美图
猜你喜欢的风格
看看这些空间怎么装修
适合我家户型的装修
老房装修服务
Copyright @ 1996 - 2016 LEJU Corporation, All Rights Reserved
乐居房产家居产品用户服务、产品咨询购买、技术服务热线:400-606-6969
广告业务洽谈:010-0-分享给朋友:把视频贴到Blog或BBS&&通用代码: <input id="link4" type="text" class="form_input form_input_s" value="" />复 制flash地址: 复 制html代码: <input type="text" class="form_input form_input_s" id="link3" value="" />复 制分享视频到站外获取收益&&手机扫码分享视频二维码2小时内有效试下画面,开个这个坑如何,请留言下载至电脑扫码用手机看用或微信扫码在手机上继续观看二维码2小时内有效试下画面,开个这个坑如何,请留言扫码用手机继续看用或微信扫码在手机上继续观看二维码2小时内有效,扫码后可分享给好友没有优酷APP?立即下载请根据您的设备选择下载版本
药品服务许可证(京)-经营-
节目制作经营许可证京字670号
请使用者仔细阅读优酷、、
Copyright(C)2016 优酷
不良信息举报电话:查看: 746|回复: 6
Redis大冒险:如何跳出SQL这个坑
论坛徽章:390
发表于 14:00| 11684次阅读| 来源博客园| 11 条评论| 作者@utopiar
摘要:随着数据体积的激增,MySQL+memcache已经满足不了大型互联网类应用的需求,许多机构也纷纷选择Redis作为其架构上的补充,然而Redis的使用门槛并不低,比如不支持SQL等,这里为大家分享Redis的使用全攻略。
【编者按】Redis,备受关注的NoSQL数据库之一,已为众多知名互联网公司使用,比如新浪微博、Pinterest及Viacom。然而,天生不支持SQL却让他看起来很不容易接近,这里我们一起看@utopiar的博文——探索Redis。
CSDN推荐:欢迎免费订阅《》获取更多Hadoop技术文献、大数据技术分析、企业实战经验,生态圈发展趋势。 以下为原文:
探索之一:Redis? What is it?简而言之,Redis是一种强大的key-value数据库,之所以强大有两点:响应速度快(所以数据内存存储,只在必要时写入磁盘),特性丰富(支持多种数据类型,以及各类型上的复杂操作)。
事实上,Redis的一个重要特性就是它并非通常意义上的数据库,虽然称之为数据库是因为它可以为你存储和维护数据,但它并不像关系数据库那样提供任何的SQL方言。不过不用担心,Redis并不是吞噬数据的黑洞,它只是不支持SQL及相关功能,但却提供了稳健的协议用于与之交互。
在Redis中,没有数据表的概念,也无须关心select、join、view等操作或功能,同时也不提供类似于int或varchar的数据字段。你面对的将是相对原始的数据集合及数据类型。
探索之二:Available datatypes下面我们深入看下这个奇怪的数据库是如何工作的。如上所见,Redis是基于key-value范式存储数据,所以先来重点看下&key&的概念。
key本质上就是简单的字符串,诸如&username&、&password&等。在定义key时,除了不能使用空格,你可以随意的使用普通的字符、数字等,像&.&,&:&,&_&等在定义key时都能正常使用,所以像&user_name&, &user:123:age&, &user:123:username&都是不错的key的定义方式。
不像RDBMS中的字段名称,这里的key是Redis中的重要组成部分,所以我们必须在处理key时多加小心。在下面的讲述中,Redis并没有table的概念,所以像&SELECT username from users WHERE user_id=123;&这种简单任务都只能换种方式实现,为了达到这种目的,在Redis上,一种方式是通过key &user:123:username&来获取结果value。如你所见,key的定义中携带了神秘信息(像user ids)。在Redis中,key的重要性可见一斑。(其他key-value数据库中key的地位也是如此。)
现在你应该对key有了清楚的了解,下面带你进入可用的数据类型的神奇世界。
StringsString是Redis中最基本的数据类型,它就是普通的二进制安全的字符串,支持最大数据长度为1Gb。
可以通过SET命令给一个key设置String类型的数据,并可通过GET命令根据key取得结果。如果你想存储数字信息,像计数器,你也可以把它存储到String数据中,并可使用INCR和DECR对之做自增和自减操作。
ListsList是string数据的集合,其中各数据项按插入顺序排列。你可以把list当作一个锁链(chain),所以可以在锁链最左边(链头)或最右边(链尾)添加一个新的链结(link);当然也可以加在锁链中间,但却要打断某个链结。
可能通过LPUSH和RPUSH命令给list添加数据(L:left, R:right),通过LPOP或RPOP命令弹出元素(同时删除该元素),也可以通过LRANGE获取指定范围的元素(仅返回数据,不会删除任何元素)。另外也可通过LSET在指定位置添加元素,但通常这种操作比简单的LPUSH或RPUSH要慢很多。
HashesHashes以简洁的方式存储关系更为紧密的数据。Hashes为每个存储的key实现一个内置的key-value对来存储数据,例如对于&user&这个key,它的值可以是多个字段以及与每个字符相应的值对组成数据集。如果你熟悉像ruby或javascript等编程语言,这里的hashes与那些语言中的hash概念大同小异。
SetsSets和它在数学上的同名概念&集合&意义相同,是包含不重复元素的集合。在Redis中,这些对象变成了Redis里的String类型。正如你想,sets与lists不同的地方在于:sets中的元素是无序的,并且不能重复,你不能在sets中放进两个相同的数据。  
可以通过SADD往set中添加数据,SREM删除数据,或者通过SPOP返回并删除此数据。此外还可以通过SUNION, SINTER, SDIFF命令分别实现集合上的&并集&, &交集&, &差集&操作。
Ordered setsOrdered sets与sets类似,不同地方在于Ordered set中的每个元素都有一个权重,用于与其他元素比较并排序。
当然ordered set与普通sets具有类似的操作,ZADD和ZREM分别是添加和删除元素。Ordered set也有自己独有的操作:ZINCR和ZSCORE,前则用于为元素的权重+1,后则则返回元素的权重值。
探索之三:Where are my tables?使用Redis与我们之前使用的SQL数据表完全不同,没有语言支持你在服务器上查询数据,这里仅有一些命令帮你操作数据库中的keys值。Redis中的命令是数据类型敏感型的,也就是说你不能在list上执行set命令,否则你将得到一个执行错误的提示。可以通过redis-cli或其他你使用的编程语言中的接口给Redis server发送命令。在下面的示例中,我们只强调命令本身,而不关注你通过哪种方式提交给Redis server。
想像一下,一个简单的SQL数据库表,像一些应用中会用到的保存用户数据的表:
id username password name surname
1  user1  pass1   Bob  Smith
2  user2  pass2   Mario Rossi
存储数据假如我们想把上面的数据存储到Redis中,你会如何在Redis中设计数据库方案呢?也许以应用的视觉来看会更直观一些。使用SQL,我们在SELECT中通过指定用户id来获得一个用户信息,换句话说就是需要有用于区分不同数据实体的方式,所以我们可以通过一个唯一的标识来标识和获取用户信息。所以如果在redis的key中加入用户的id信息,那么我们的查询需求就解决了,在redis中,数据被存储成如下形式:
Key        Value
user:1:username  user1
user:1assword  pass1
user:1:name    Bob
user:1:surname   Smith
user:2:username  user2
user:2assword  pass2
user:2:name    &&Mario
user:2:surname   Rossi
那么,给出任一个用户id,我们就可以通过key user:id:username,user:idassword,user:id:name,user:id:surname的形式读出用户信息。
用户登录上面的存储形式也能用于用户登录,但需要一种方式能根据username来查询用户的id。也就是说我们还需要在username和id之间建立联系。这可以通过添加另外一个redis key&user:username:id&来实现。
key      value
user:user1:id  1
user:user2:id  2
现在如果Mario Rossi想要登录进来,我们可以通过key&user:user2:id&先查出username,进而获得用户的所有信息。
主键在Redis中如何保证id值的唯一性呢。在SQL中,可以通过&id int primary key auto_increment&定义自增主键来实现,现在我们也需要一种类似的方式为每个用户生成一个不同的id。根据前面可用的数据类型中提到的数字数据,Redis中的方案是这样的:创建一个key&user:next_id&,并把它作为计数器,每当要添加新用户时,就对key&user:next_id&执行INCR命令。
SELECT * FROM下一个面临的问题是查询用户列表。也许你认为我们上面的数据存储已经足以查询出用户列表:可以先获得&user:next_id&的当前值counter,然后通过一步或多步遍历0到counter获得用户数据。但如果某个用户从系统中删除(下面会讲到删除操作),而我们会遍历0到counter中的所有id,这时就会有些id查询不到任何数据。
尽管这通常不是问题,但我们不想在不存在的用户数据上浪费时间,所以需要创建另外一个key&user:list&,其value为list或set类型,用于存储每一个新增的用户id,并在必要的时候从&user:list&中删除该id。我更倾向于使用list,因为它可能通过LRANGE命令实现分页功能。
删除用户还有一个要面临的问题是&数据完整性&,看看我们在删除用户时会发生什么吧。我们需要删除每一个对此用户的引用,也就是说,需要删除下面所有的key&user:id:*&,&user:username:id&,以及&user:list&中的用户id。
探索之四:A Simple use case为了学习致用,我们尝试设计一个虚拟图书馆,并能根据主题对图书分组。下面的例子比上面的用户表会稍微复杂些,但你将学会如何在Redis中处理关联关系。
在应用中,我们需要收集图书,并存储他们的title,author(s), topic(s), pages, price, ISBN和description。显然有些图书的作者不止一个,并且它也许会涵盖不同的主题(例如一本书可以是编程主题,也可以是描述的ruby编程)。另外一个作者可能写了很多本书,而一个主题必然会包含很多本书。可以看出,这里出现了作者和图书、主题和图书的多对多关系。
SQL场景首先,我们尝试使用SQL数据表为此种场景建数据模型,以便于我们更直观的在Redis领域中模拟:
Booksid title         pages price   isbn     description
1 Programming Ruby &&829   $26   ruby programming language
2 Erlang Programming 496   $42    an introduction to erlang
Authorsid name    surname
1  Dave    Thomas
2  Chad    Fowler
3  Andy    Hunt
4  Francesco  Cesarini
5  Simon    Thompson
Topicsid  name      description
1   programming Books about programming
2   ruby      Books about ruby
3   erlang    &&Books about erlang
Books-Authorsbook_id author_id
1     1
1     2
1     3
2     4
2     5
Books-Topicsbook_id topic_id
1     1
1     2
2     1
2     3
Redis场景前面已经介绍了如何在Redis中存储数据,所以这里理解Books,Authors和Topics这三张表应该不成问题。但当面对Books-Authors和Book-Topics这种表之间的多对多关联时,问题变得复杂起来。下面以Topic为例来看如何解决Book与Topic之间的关联,一旦对这个关系清楚了,Book与Author之间的关系也就迎刃而解了。
对于每本book,我们需要知道它属于哪些topics;同样对于每个topic,也要处理它包含的每本book。换句话说,对每本book,需要一个存储它所关联的topic的id列表,对于每个topic,同样需要一个存储它关联的book的id列表。这正是set大展身手的地方。我们将创建两个sets:&book:id:topic&和&topic:id:books&,前者保存book的topics'id列表,后者存储topic的books'id列表。以前面SQL场景中的数据为例,图书&Programming Erlang&(books表中的id为2),将有一个key为&book:2:topics&,value为set类型且数据为(1,3)的数据信息;而主题&programming&则会有一个key为&topic:1:books&,值为(1,2)的数据集。
经过分析,就得出了Redis场景下的数据模型:
AuthorsStrings
- author:id
- author:id:name
- author:id:surname
- author:id:books
- authorlist
BooksStrings
- book:id
- book:id:title
- book:idages
- book:idrice
- book:id:isbn
- book:id:description
- books:id:authors - books:id:topics
- book:list
TopicsString
- topic:id
- topic:id:name
- topic:id:description
- topic:id:books
- topic:list
可以看出,在SQL中的多对多关联,在Redis中可以通过两个set来实现。你会发现这种实现相当有用,它给我们提供了一种可以自由获得其他信息的能力:可以通过对所有感兴趣的&topic:id:books&集合中交集操作,从而获得隶属于多个主题的图书。例如对集合&topic:1:books&(programming主题)和&topic:2:books&(ruby主题)做交集,会得到只有一个元素(1)的集合,从而获得id=1的图书:programming Ruby。
对于这种实现,你必须特别关注对数据的删除操作。因为topics里有对books的引用,同样books里有对topics的引用,那删除如何操作?以删除books中的数据为例,首先想到的是要删除每个key为&book:id:*&的数据,但执行此操作前需要先遍历topics中的所有key为&topic:id:books&的集合,并从中删除待删除图书的id,当然也要从books中key为&book:list&的列表中删除此id。如果想删除一个topic,操作也很类似:从topics中删除所有key为&topic:id:*&信息之前,需要先遍历books中的key为&books:id:topics&的topic id集,并从中删除待删除topic的id,同时从&topic:list&列表中也删除此id。同样的操作对于authors一样适用。
探索之五:Back home对于Redis的探索到一段落,现在回头看看我们的旅行包里收获了哪些精彩。
我们学习了Redis中的数据类型及操作命令,还有一些其他有趣的东西。 是不是还有几段记忆深刻的故事呢:
通过对String数据执行INCR命令解决唯一自增主键问题通过含义丰富的key:&user:username:id&处理用户登录场景通过set实现数据间的多对多关联
到此为止,Redis之旅已经结束,希望未给你带来不快。最后送上一副良济:having fun coding free software!
译者注:本文是翻译而来,个人感觉是通过与SQL做对比,来强调Redis的不同,进而让读者能跳出SQL的枷锁,以实现对Redis的理解。
在真实场景中,Redis未必如文中描述的方式使用,我自己对Redis的使用场景也在学习中,欢迎指导。
原文连接: (责编/仲浩)
论坛徽章:390
redis windows下使用及redis命令
Redis 是一个开源,高级的键值对的存储。它经常作为服务端的数据结构,它的键的数据类型能够是strings, hashs, lists, sets(无序集合) 和 sorted sets(有序集合).
如果我们要在windows下使用redis作为学习之用,可以去 下载最新的windows下的redis,最新的版本目前是2.4.5
现在完成以后可以解压,有2个文件夹,分别对应的是32位的windows, 64位的windows。
笔者的电脑是32位的win7 专业版,所以打开32的那个文件夹,可以看看一些config, exe文件,双击 redis-server.exe运行。可以看到一些信息:
端口号:6379;使用了redis.conf配置文件;redis的版本号:2.4.5;还有就是客户端的连接数。
此时,可以双击 redis-cli.exe 运行一个客户端,运行后可以看到redis 127.0.0.1:6379
此时可以通过一个命令来展示redis的功能。redis的命令如下:
QUIT 关闭连接
AUTH (仅限启用时)简单的密码验证
适合全体类型的命令
EXISTS key 判断一个键是否存在;存在返回 1;否则返回0;
DEL key 删除某个key,或是一系列DEL key1 key2 key3 key4
TYPE key 返回某个key元素的数据类型 ( none:不存在,string:字符,list,set,zset,hash)
KEYS pattern 返回匹配的key列表 (KEYS foo*:查找foo开头的keys)
RANDOMKEY 随机获得一个已经存在的key,如果当前数据库为空,则返回空字符串
RENAME oldname newname更改key的名字,新键如果存在将被覆盖
RENAMENX oldname newname 更改key的名字,如果名字存在则更改失败
DBSIZE返回当前数据库的key的总数
EXPIRE设置某个key的过期时间(秒),(EXPIRE bruce 1000:设置bruce这个key1000秒后系统自动删除)注意:如果在还没有过期的时候,对值进行了改变,那么那个值会被清除。
TTL查找某个key还有多长时间过期,返回时间秒
SELECT index 选择数据库
MOVE key dbindex 将指定键从当前数据库移到目标数据库 dbindex。成功返回 1;否则返回0(源数据库不存在key或目标数据库已存在同名key);
FLUSHDB 清空当前数据库中的所有键
FLUSHALL 清空所有数据库中的所有键
处理字符串的命令
SET key value 给一个键设置字符串值。SET keyname datalength data (SET bruce 10 paitoubing:保存key为burce,字符串长度为10的一个字符串paitoubing到数据库),data最大不可超过1G。
GET key获取某个key 的value值。如key不存在,则返回字符串“nil”;如key的值不为字符串类型,则返回一个错误。
GETSET key value可以理解成获得的key的值然后SET这个值,更加方便的操作 (SET bruce 10 paitoubing,这个时候需要修改bruce变成并获取这个以前的数据paitoubing,GETSET bruce 10 )
MGET key1 key2 … keyN 一次性返回多个键的值
SETNX key value SETNX与SET的区别是SET可以创建与更新key的value,而SETNX是如果key不存在,则创建key与value数据
MSET key1 value1 key2 value2 … keyN valueN 在一次原子操作下一次性设置多个键和值
MSETNX key1 value1 key2 value2 … keyN valueN 在一次原子操作下一次性设置多个键和值(目标键不存在情况下,如果有一个以上的key已存在,则失败)
INCR key 自增键值
INCRBY key integer 令键值自增指定数值
DECR key 自减键值
DECRBY key integer 令键值自减指定数值
处理 lists 的命令
RPUSH key value 从 List 尾部添加一个元素(如序列不存在,则先创建,如已存在同名Key而非序列,则返回错误)
LPUSH key value 从 List 头部添加一个元素
LLEN key 返回一个 List 的长度
LRANGE key start end从自定的范围内返回序列的元素 (LRANGE testlist 0 2;返回序列testlist前0 1 2元素)
LTRIM key start end修剪某个范围之外的数据 (LTRIM testlist 0 2;保留0 1 2元素,其余的删除)
LINDEX key index返回某个位置的序列值(LINDEX testlist 0;返回序列testlist位置为0的元素)
LSET key index value更新某个位置元素的值
LREM key count value 从 List 的头部(count正数)或尾部(count负数)删除一定数量(count)匹配value的元素,返回删除的元素数量。
LPOP key 弹出 List 的第一个元素
RPOP key 弹出 List 的最后一个元素
RPOPLPUSH srckey dstkey 弹出 _srckey_ 中最后一个元素并将其压入 _dstkey_头部,key不存在或序列为空则返回“nil”
处理集合(sets)的命令(有索引无序序列)
SADD key member增加元素到SETS序列,如果元素(membe)不存在则添加成功 1,否则失败 0;(SADD testlist 3 \n one)
SREM key member 删除SETS序列的某个元素,如果元素不存在则失败0,否则成功 1(SREM testlist 3 \N one)
SPOP key 从集合中随机弹出一个成员
SMOVE srckey dstkey member 把一个SETS序列的某个元素 移动到 另外一个SETS序列 (SMOVE testlist test 3\从序列testlist移动元素two到 test中,testlist中将不存在two元素)
SCARD key 统计某个SETS的序列的元素数量
SISMEMBER key member 获知指定成员是否存在于集合中
SINTER key1 key2 … keyN 返回 key1, key2, …, keyN 中的交集
SINTERSTORE dstkey key1 key2 … keyN 将 key1, key2, …, keyN 中的交集存入 dstkey
SUNION key1 key2 … keyN 返回 key1, key2, …, keyN 的并集
SUNIONSTORE dstkey key1 key2 … keyN 将 key1, key2, …, keyN 的并集存入 dstkey
SDIFF key1 key2 … keyN 依据 key2, …, keyN 求 key1 的差集。官方例子:
key1 = x,a,b,c
key3 = a,d
SDIFF key1,key2,key3 =& x,b
SDIFFSTORE dstkey key1 key2 … keyN 依据 key2, …, keyN 求 key1 的差集并存入 dstkey
SMEMBERS key 返回某个序列的所有元素
SRANDMEMBER key 随机返回某个序列的元素
处理有序集合(sorted sets)的命令 (zsets)
ZADD key score member 添加指定成员到有序集合中,如果目标存在则更新score(分值,排序用)
ZREM key member 从有序集合删除指定成员
ZINCRBY key increment member 如果成员存在则将其增加_increment_,否则将设置一个score为_increment_的成员
ZRANGE key start end 返回升序排序后的指定范围的成员
ZREVRANGE key start end 返回降序排序后的指定范围的成员
ZRANGEBYSCORE key min max 返回所有符合score &= min和score &= max的成员 ZCARD key 返回有序集合的元素数量 ZSCORE key element 返回指定成员的SCORE值 ZREMRANGEBYSCORE key min max 删除符合 score &= min 和 score &= max 条件的所有成员
排序(List, Set, Sorted Set)
SORT key BY pattern LIMIT start end GET pattern ASC|DESC ALPHA 按照指定模式排序集合或List
SORT mylist
默认升序 ASC
SORT mylist DESC
SORT mylist LIMIT 0 10
从序号0开始,取10条
SORT mylist LIMIT 0 10 ALPHA DESC
按首字符排序
SORT mylist BY weight_*
SORT mylist BY weight_* GET object_*
SORT mylist BY weight_* GET object_* GET #
SORT mylist BY weight_* STORE resultkey
将返回的结果存放于resultkey序列(List)
SAVE 同步保存数据到磁盘
BGSAVE 异步保存数据到磁盘
LASTSAVE 返回上次成功保存到磁盘的Unix时间戳
SHUTDOWN 同步保存到服务器并关闭 Redis 服务器(SAVE+QUIT)
BGREWRITEAOF 当日志文件过长时重写日志文件
远程控制命令
INFO 提供服务器的信息和统计信息
MONITOR 实时输出所有收到的请求
SLAVEOF 修改复制选项
命令都是大写,其实小写也是可以的。
最简单的例子:
具体的命令大家可以一个一个试试。
分类: redis
标签: redis
论坛徽章:390
Redis 3.2.100 Windows 32位下载
因为公司的老服务器用的是Windows 2008 32位,不得不安装Redis32位。可在微软的Github上有64位的MSI安装包,前天开始在不同的群里寻找32位的安装包,一直没找到,索性自己下载源码,安装VS2013 SP5,编译了一份Windows32位的服务程序,同时加上了安装和卸载服务的bat,直接解压缩到服务器的目录,分配NETWORK SERVICE权限,运行service-install.bat即可完成安装。
打包文件下载地址:
论坛徽章:390
(657.78 KB, 下载次数: 0)
13:25 上传
点击文件名下载附件
论坛徽章:390
D:\Redis&dir *bat
驱动器 D 中的卷是 LENOVO
卷的序列号是 06B4-BF89
D:\Redis 的目录
&&13:09& && && && && &102 service-install.bat
&&13:10& && && && && & 61 uninstall-service.bat
& && && && && &2 个文件& && && && &163 字节
& && && && && &0 个目录 307,491,287,040 可用字节
D:\Redis&service-install
D:\Redis&redis-server.exe --service-install redis.windows.conf --loglevel verbose
[13684] 09 Sep 13:24:22.079 # Granting read/write access to 'NT AUTHORITY\NetworkService' on: &D:\Redis& &D:\Redis\&
[13684] 09 Sep 13:24:22.079 # Redis successfully installed as a service.
D:\Redis&redis-server --service-start
[12336] 09 Sep 13:24:24.895 # Redis service successfully started.
D:\Redis&redis-cli.exe -h 127.0.0.1 -p 6379 -a 123456
127.0.0.1:6379& set num 0
127.0.0.1:6379& get num
127.0.0.1:6379& incr num
(integer) 1
127.0.0.1:6379& incr num
(integer) 2
127.0.0.1:6379& get num
论坛徽章:390
(2.16 MB, 下载次数: 0)
13:42 上传
点击文件名下载附件
(3.28 MB, 下载次数: 0)
13:42 上传
点击文件名下载附件
(2.06 MB, 下载次数: 0)
13:42 上传
点击文件名下载附件
论坛徽章:390
一个sql前端
An experimental SQL client for the Redis key-value store.
Installation
$ git clone
Getting Started
Command line REPL
python.exe repl.py --host &host&
sql& insert into places (id, city, state) values (1, &Ridgefield&, &CT&)
sql& insert into places (id, city, state) values (2, &New York&, &NY&)
sql& insert into places (id, city, state) values (3, &Tucson&, &AZ&)
sql& select * from places
[{'city': 'Ridgefield', 'id': '1', 'state': 'CT'},
{'city': 'Tucson', 'id': '3', 'state': 'AZ'},
{'city': 'New York', 'id': '2', 'state': 'NY'}]
Python client
&&& from redisql.client import Client
&&& c = Client(host, port)
&&& c.query(&insert into people (id, name, age) values (1, 'Aaron', 30)&)
&&& c.query(&insert into people (id, name, age) values (2, 'Ben', 20)&)
&&& c.query(&insert into people (id, name, age) values (3, 'Charlie', 40)&)
&&& c.query(&insert into people (id, name, age) values (4, 'Dan', 25)&)
&&& c.query(&insert into people (id, name, town, age) values (5, 'Ed', 'New York', 32)&)
&&& pprint.pprint(c.query(&select * from people&))
[{'age': '30', 'id': '1', 'name': 'Aaron'},
{'age': '40', 'id': '3', 'name': 'Charlie'},
{'age': '20', 'id': '2', 'name': 'Ben'},
{'age': '32', 'id': '5', 'name': 'Ed', 'town': 'New York'},
{'age': '25', 'id': '4', 'name': 'Dan'}]
itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有    
 北京市公安局海淀分局网监中心备案编号: 广播电视节目制作经营许可证:编号(京)字第1149号

我要回帖

更多关于 缅甸炮弹中国炸出大坑 的文章

 

随机推荐