厦门大学数据库实验室-罗道文-键值数据库redis

上传人:第*** 文档编号:55393282 上传时间:2018-09-28 格式:PPT 页数:37 大小:1.71MB
返回 下载 相关 举报
厦门大学数据库实验室-罗道文-键值数据库redis_第1页
第1页 / 共37页
厦门大学数据库实验室-罗道文-键值数据库redis_第2页
第2页 / 共37页
厦门大学数据库实验室-罗道文-键值数据库redis_第3页
第3页 / 共37页
厦门大学数据库实验室-罗道文-键值数据库redis_第4页
第4页 / 共37页
厦门大学数据库实验室-罗道文-键值数据库redis_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《厦门大学数据库实验室-罗道文-键值数据库redis》由会员分享,可在线阅读,更多相关《厦门大学数据库实验室-罗道文-键值数据库redis(37页珍藏版)》请在金锄头文库上搜索。

1、,厦门大学数据库实验室,Redis数据库介绍,报告人:罗道文 导师:林子雨 时间:2015年07月10日,过渡页,1,目录,Redis简介,2,1,Remote Dictionary Server(Redis),即远程字典服务器,2,Redis是一个开源的,ANSI C语言编写,支持网络,基于内存亦可持久化的日志型的,Key-Value数据库,3,作者:Salvatore Sanfilippo,来自意大利西西里岛,任职于Pivotal,4,从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。,数据类型,3,Redis支持

2、5中数据类型:,字符串对象(string),1,2,列表对象(list),3,哈希对象(hash),集合对象(set),有序集合对象(zset),4,5,数据类型,4,sds,数据类型,5,sds动态字符串,6,Sds动态字符串的定义:,Sds动态字符串,7,图解sds:,struct sdshdr,sds s,sds.c文件:,Sds动态字符串,8,字符串操作:,跳跃链表,9,Skiplist跳跃链表的定义:,跳跃链表,10,跳跃链表,11,-1,-1,-1,7,7,14,21,21,21,32,37,37,37,71,71,85,跳跃链表,12,-1,-1,-1,7,7,14,21,21,

3、21,32,37,37,37,71,71,85,35,35,35,跳跃链表,13,字典,14,1,2,3,4,Dict字典的定义:,字典,15,图解Dict:,字典,16,字典操作:,对象,17,redisObject的定义:,对象,18,redisObject图解:,19,Redis执行流程:,Redis事件:1、定时事件 2、超时事件 3、套接字读事件 4、套接字写事件,Redis执行流程:,20,当客户端发起一个连接时:,21,客户端服务器模型:,Redis执行流程:,22,Redis执行流程:,23,当回复发给客户端后:,Redis执行流程:,应用场景,24,1、排行榜相关,一个很普遍

4、的需求是各种数据库的数据并非存储在内存中,因此在按得分排序以及实时更新这些几乎每秒钟都需要更新的功能上数据库的性能不够理想。,典型的比如那些在线游戏的排行榜,比如一个Facebook的游戏,根据得分你通常想要:- 列出前100名高分选手- 列出某用户当前的全球排名,应用场景,25,Redis解决之道:,模式是这样的,每次获得新得分时,我们用这样的代码:ZADD leaderboard 得到前100名高分用户很简单:ZREVRANGE leaderboard 0 99。 用户的全球排名也相似,只需要:ZRANK leaderboard 。,应用场景,26,2、特定时间内的特定项目,另一项对于其他

5、数据库很难,但Redis做起来却轻而易举的事就是统计在某段特点时间里有多少特定用户访问了某个特定资源。比如我想要知道某些特定的注册用户或IP地址,他们到底有多少访问了某篇文章。,应用场景,27,Redis解决之道:,每次我获得一次新的页面浏览时我只需要这样做:SADD page:day1: 当然你可能想用unix时间替换day1,比如time()-(time()%3600*24)等等。想知道特定用户的数量吗?只需要使用SCARD page:day1:。需要测试某个特定用户是否访问了这个页面?SISMEMBER page:day1:。,应用场景,28,新浪微博:史上最大的Redis集群,应用场景

6、,29,技术需求:,面对微博常常出现的热点,如最近出现了较为火爆的短链,短时间有数以万计的人点击、跳转,而这里会常常涌现一些需求,比如我们向快速在跳转时判定用户等级,是否有一些账号绑定,性别爱好什么的,已给其展示不同的内容或者信息。,应用场景,30,普通采用memcache+Mysql的解决方案,当调用id合法的情况下,可支撑较大的吞吐。但当调用id不可控,有较多垃圾用户调用时,由于memcache未有命中,会大量的穿透至Mysql服务器,瞬间造成连接数疯长,整体吞吐量降低,响应时间变慢。,原始解决办法:,应用场景,31,Redis解决问题:,这里我们可以用redis记录全量的用户判定信息,如string key:uid int:type,做一次反向的cache,当用户在redis快速获取自己等级等信息后,再去Mc+Mysql层去获取全量信息。如图:,安装运行,32,redis下载:,安装运行,33,Redis安装:,1、解压:tar xzvf redis-stable.tar.gz2、进入目录:cd redis-stable3、编译:make4、安装:make install,安装运行,34,Redis服务器启动:,安装运行,35,Redis客户端启动:,谢谢,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号