欢迎来到天天文库
浏览记录
ID:10245856
大小:50.19 KB
页数:34页
时间:2018-06-13
《详细介绍redis的几种数据结构以及使用注意事项》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、详细介绍Redis的几种数据结构以及使用注意事项目录结构1.Overview1.1资料《TheLittleRedisBook》,最好的入门小册子,可以先于一切文档之前看,免费。作者Antirez的博客,Antirez维护的RedisTwitter。Redis命令中文版,huangz同学的翻译。Redis设计与实现,又是huangz同学的巨作,深入了解内部实现机制。Redis2.6源码中文注释版,继续是huangz同学的大功德。NoSQLFan里的Redis分类《RedisinAction》(Manning,2013)挺实战的
2、一本书。1.2优缺点非常非常的快,有测评说比Memcached还快(当大家都是单CPU的时候),而且是无短板的快,读写都一般的快,所有API都差不多快,也没有MySQLCluster、MongoDB那样更新同一条记录如Counter时慢下去的毛病。丰富的数据结构,超越了一般的Key-Value数据库而被认为是一个数据结构服务器。组合各种结构,限制Redis用途的是你自己的想象力,作者自己捉刀写的用途入门。因为是个人作品,Redis目前只有2.3万行代码,Keepitsimple的死硬做法,使得普通公司而不需淘宝那个级别的文艺
3、公司也可以吃透它。Redis宣言就是作者的自白,我最喜欢其中的"代码像首诗","设计是一场与复杂性的战斗","Coding是一件艰苦的事情,唯一的办法是享受它。如果它已不能带来快乐就停止它。为了防止这一天的出现,我们要尽量避免把Redis往乏味的路上带。让人又爱又恨的单线程架构,使得代码不用处理平时最让人头痛的并发而大幅简化,也不用老是担心作者的并发有没有写对,但也带来CPU的瓶颈,而且单线程被慢操作所阻塞时,其他请求的延时变得不确定。那Redis不是什么?Redis不是BigData,数据都在内存中,无法以T为单位。在Re
4、dis-Cluster发布并被稳定使用之前,Redis没有真正的平滑水平扩展能力。Redis不支持Ad-HocQuery,提供的只是数据结构的API,没有SQL一样的查询能力。1.3Feature速览所有数据都在内存中。五种数据结构:String/Hash/List/Set/OrderedSet。数据过期时间支持。不完全的事务支持。服务端脚本:使用LuaScript编写,类似存储过程的作用。PubSub:捞过界的消息一对多发布订阅功能,起码Redis-Sentinel使用了它。持久化:支持定期导出内存的Snapshot与记录
5、写操作日志的AppendOnlyFile两种模式。Replication:Master-Slave模式,Master可连接多个只读Slave,暂无专门的GeographicReplication支持。Fail-Over:Redis-Sentinel节点负责监控Master节点,在master失效时提升slave,独立的仲裁节点模式有效防止脑裂。Sharding:开发中的Redis-Cluser。动态配置:所有参数可用命令行动态配置不需重启,并重新写回配置文件中,对云上的大规模部署非常合适。1.4八卦作者是意大利的Salvat
6、oreSanfilippo(antirez),又是VMWare大善人聘请了他专心写Redis。EMC与VMWare将旗下的开源产品如Redis和Spring都整合到了孙公司Pivotal公司。Pivotal做的antirez访谈录,内含一切八卦,比如他的爱好是举重、跑步和品红酒。默认端口6379,是手机按键上MERZ对应的号码,意大利歌女AlessiaMerz是antirez和朋友们认为愚蠢的代名词。2.数据结构2.1KeyKey不能太长,比如1024字节,但antirez也不喜欢太短如"u:1000:pwd",要表达清楚意
7、思才好。他私人建议用":"分隔域,用"."作为单词间的连接,如"comment:1234:reply.to"。Keys,返回匹配的key,支持通配符如"keysa*"、"keysa?c",但不建议在生产环境大数据量下使用。Sort,对集合按数字或字母顺序排序后返回或另存为list,还可以关联到外部key等。因为复杂度是最高的O(N+M*log(M))(N是集合大小,M为返回元素的数量),有时会安排到slave上执行。Expire/ExpireAt/Persist/TTL,关于Key超时的操作。默认以秒为单位,也有p字头的以毫
8、秒为单位的版本,Redis的内部实现见2.9过期数据清除。2.2String最普通的key-value类型,说是String,其实是任意的byte[],比如图片,最大512M。所有常用命令的复杂度都是O(1),普通的Get/Set方法,可以用来做Cache,存Session,为了简化架构甚
此文档下载收益归作者所有