Redis介绍及常用命令剖析.docx

  1. 1、本文档共51页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Redis介绍及常用命令剖析

一 Redis介绍 ? Redis是一个开源的使用ANSI C语言编写、支持网络、可基于 HYPERLINK /list/b/0205_1.shtml \o 内存 \t _blank 内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。 ? Redis能运行在大多数POSIX(Linux, *BSD, OS X 和Solaris等)系统上,官方没有支持Windows的版本。目前最新的版本是2.2.11,这个版本主要是修复了一个2.2.7版本中遍历方式优化带来的一个bug。   和普通的Key-Value结构不同,Redis的Key支持灵活的数据结构,除了strings,还有hashes、lists、 sets 和sorted sets等结构。正是这些灵活的数据结构,丰富了Redis的应用场景,能满足更多业务上的灵活存储需求。   Redis的数据都保存在 HYPERLINK /Memory/10734_1.html \o 内存 \t _blank 内存中,而且底层实现上是自己写了epoll event loop部分,而没有采用开源的libevent等通用框架,所以读写效率很高。为了实现数据的持久化,Redis支持定期刷新(可通过配置实现)或写日志的方式来保存数据到磁盘。   1、数据类型   作为Key-value型数据库,Redis也提供了键(Key)和键值(Value)的映射关系。但是,除了常规的数值或字符串,Redis的键值还可以是以下形式之一:   ●Lists (列表)   ●Sets (集合)   ●Sorted sets (有序集合)   ●Hashes (哈希表)   键值的数据类型决定了该键值支持的操作。Redis支持诸如列表、集合或有序集合的交集、并集、查集等高级原子操作;同时,如果键值的类型是普通数字,Redis则提供自增等原子操作。   2、持久化   通常,Redis将数据存储于 HYPERLINK /Memory/10734_1.html \o 内存 \t _blank 内存中,或被配置为使用虚拟内存。通过两种方式可以实现数据持久化:使用截图的方式,将内存中的数据不断写入磁盘;或使用类似MySQL的日志方式,记录每次更新的日志。前者性能较高,但是可能会引起一定程度的数据丢失;后者相反。   3、主从同步   Redis支持将数据同步到多台从库上,这种特性对提高读取性能非常有益。   4、性能   相比需要依赖磁盘记录每个更???的数据库,基于内存的特性无疑给Redis带来了非常优秀的性能。读写操作之间有显著的性能差异。   5、提供API的语言   ●C   ●C++   ●C#   ●Clojure   ●Common Lisp   ●Erlang   ●Haskell   ●Java   ●Javascript   ●Lua   ●Objective-C   ●Perl   ●PHP   ●Python   ●Ruby   ●Scala   ●Go   ●Tcl ? 6、适用场合   毫无疑问,Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进 HYPERLINK /list/b/0732_1.shtml \o 冰箱 \t _blank 冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象构建不同的 HYPERLINK /icebox/10734_1.html \o 冰箱 \t _blank 冰箱。希望你喜欢这个比喻。   下面是Redis适用的一些场景:   (1)、取最新N个数据的操作   比如典型的取你网站的最新文章,通过下面方式,我们可以将最新的5000条评论的ID放在Redis的List集合中,并将超出集合部分从数据库获取。   使用LPUSH ments命令,向list集合中插入数据   插入完成后再用LTRIM ments 0 5000命令使其永远只保存最近5000个ID   然后我们在客户端获取某一页评论时可以用下面的逻辑 FUNCTION get_latest_comments(start,num_items): id_list = redis.lrange(ments,start,start+num_items-1) IF id_list.length num_items id_list = SQL_DB(SELECT ... ORDER BY time LIMIT ...) END RETURN id_list END   如果你还有不同的筛选维度,比如某个分类的最新N

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档