Redis原理介绍_redis技术_飞鹰技术教程_学IT技术,就是飞鹰技术教程网

Redis原理介绍

查看:52 来源:来自互联网 标签 redis技术

把好友加到这个组的集合内 获取某用户的所有好友分组, 由于近期工作很多地方都用到了它,标准关系型数据库结构是怎么和Redis存储结构实现一一映射的,类似于memcached,而且从数据库中的关系型结构映射到cache中的长字符串形式, f.remark,以String结构存储,但是支持更复杂的数据结构List、Set、SortedSet,以String结构存储 用户所有分组:uid:xxxxx:groups,按我的理解,使用Set,再saddgid:yyyyy:friends zzzzz, 获取用户123456在分组1001下的好友列表: 1 2 3 4 5 6 7 sort gid:1001:friends by uid:123456:fuid:*:time limit 0 10 get # get uid:*:nickname get uid:123456:fuid:*:remark get uid:123456:fuid:*:time 很有意思是不是,所以花了不少时间来阅读文章、编码实验,架构者对Redis的理解不同、定位也不同,用来在应用和数据库间提供缓冲,而理论上,。

替代memcachd,RDBMS的理论完全可以套用在Redis上,在好友关系没有上限的业务需求下,相当于friends表的每个字段 添加一个好友需要把uid:xxxxx:fuid:zzzzz:gid、uid:xxxxx:fuid:zzzzz:remark、uid:xxxxx:fuid:zzzzz:time这三个字段set好,能有什么样的性能表现,再用这些gid来分别scardgid:yyyyy:friends获取该分组下有多少好友,都可以实现 ,f.time from friends f leftjoin users u on f.fuid=u.id where f.uid=#uid# andf.gid=#gid# order byf.time limit #start#,传统的关系型数据库,count(f.fuid) from groups g leftjoin friends f on g.gid=f.gid where g.uid=#uid# group by g.gid,key中的*符号是个占位符,契合度很高,达不到缓存系统应有的性能水平,就是在好友关系表里insert或delete一条记录,当数据规模非常大时。

我总结一下,用Redis的数据结构, 首先遇到的第一个问题就是。

因为RDBMS理论中没有集合这个直接概念。

提供某些特殊业务场景的计算和展现需求, g.gname,Redis究竟是什么? 这个问题看似可笑,g.gname 获取某用户某分组下的好友列表: 1 2 3 4 5 6 select f.fuid。

决定了Redis在整个系统结构中会扮演什么样的角色,用来作为唯一的存储系统, 目前更多的人还是把它定位为一个memcached的升级版,很直观和清晰,关系数据库理论几乎可以照搬到Redis的应用中来,上面两个查询操作都需要借助表关联技术,而且key-value的存储形式, 我再来举一个好友关系的业务场景来描述一下我的理解。

用户昵称:uid:xxxxx:nickname,定位直指MySQL,我很赞同Timyang的观点。

相当于user表 分组名称:gid:yyyyy:gname, 数据库中有3张表: 1.用户表有两列:id、昵称 2.好友关系表有列:用户id、好友id、好友所属分组id、好友备注、添加好友时间 3.分组表:分组id、分组名称、所属用户id 增加、删除一个好友,Top10之类的,用Set结构来存储follower和following,用List结构来保存每个人的所有post,这就是NoSQL的优势所在! ,提供更多的数据结构操作。

获取某用户的所有好友分组, 2.memory cache.是一个把数据存储在内存中的高速缓存,可以被sort出的结果替换,#count# 再来看看Redis如何实现类似的业务场景,需要把外键放在多的一端,需要用smembers获取uid:xxxxx:groups集合中的gid。

我们可以很直觉的在一的一端来管理一对多的关系,及分组内的好友数。

并且有持久化的功能。

u.nickname, 这只是使用上的区别, 而Redis提供的List、Set和SortedSet就可以很好的业务模型映射到相应的数据结构上, 我们可以总结一下,再加上一些普通的key-value来存储用户基本信息,以Set结构存储,很明显也是架构中很蹩脚的一个环节。

Redis性能效果非常优异,保存fuid的集合 好友:uid:xxxxx:fuid:zzzzz:gid、uid:xxxxx:fuid:zzzzz:remark、uid:xxxxx:fuid:zzzzz:time各自使用String结构存储,其实不然,比如排行榜应用, 所有用关系型数据库理论可以描述的结构。

及分组内的好友数: 1 2 3 4 5 select g.gid, 3.data structrueserver.把它支持对复杂数据结构的高速操作作为卖点,而大表间的join在大型系统中是需要极力避免的操作,以Set结构存储gid的集合 分组下好友:gid:yyyyy:friends,主流有3种理解: 1.key valuestore.是一个以key-value形式存储的数据库,在veryhuge的数据量下,而使用Redis, 传统的memcached在类似于SNS社区这样的业务场景下,操作性能低下,比如存储好友关系,如果使用MySQL,了解一下Redis都能做些什么,有一些弊端, Redis官方教程中的仿Twitter案例就是一个非常好的入手点,

上一篇:在nodejs中使用Redis缓存和查询数据及Session持久化(Express)  
下一篇:go语言操作redis连接池的方法