APP开发利用Redis获取id数据的方法(二)
制作APP怎样利用Redis获取好友数据,深圳APP开发公司在前面本站APP开发栏目做过第一种方式的介绍,本文今天主要介绍第二种方式,并以制作交友APP获取好友的案例进行实操分享。博纳网络希望这类型的能对各位APP开发爱好者的日常工作有所帮助。
第二种方式,有多少组用户属性就用多少个i:ev-Value对象,用户id“5”加上对应的属性名来作为Kev,属性值作为Value。这种方式存取或获取数据,虽然免去了如第种方式JSON/反JSON的开销,但是在内存万面的开销还是比hash的大(在下面内存优化的章节会描述,通过在Redis配置文件中优化“hash-max-zipmap-entries”和“hash-111ax-zipmap-value”这两个参数可以让hash更省内存)。
应用场景
App后台常见的功能是根据用户的id获取用户的信息。例如.根据用户的id获取用户的昵称、头像、所在地等信息。一般用户的信息是存储在数据库中.对于这种高频的数据访问,不可能每次获取这些信息都读取数据库.自然而然开发人员会考虑到把用户的信息存储在Redis的hash中,如图7-5所示。
APP开发数据获取实操示意图7-5用户信息的hash数据
获得用户id后需要获取用户的数据,用hgetall命令获取id下所有的field和value,命令如下:
hgetall id
注意:如果修改了数据库的用户数据,也要把这些数据同步更新到Redis,用来防止Redis和数据库的数据不一致。
APP制作经验之list--模拟队列操作
1.简介
Redis中list是按照插入顺序排序的字符串链表,可以在头部和尾部插入新的元素(即队列结构)。插入元素时如果该i:ev不存在,Redis会为该Key创建一个新的链表,如果链表中所有的元素都被移除,该Kev也会从Redis中移除。
注意:由于list在Redis中是链表结构,如果在头部或尾部插入新的元素,即使链表中存储了上百万的数据,性能也非常高效。如果在链表中插入元素,由于需要根据头部或尾部的指针遍历到链表指定的位置.Redis的插入效率很低。
2.数据模型
list的数据模型如图7-6所示
APP开发list数据模型示意图7-6链表的数据模型
常见的操作是用lpush命令在list头部插入元素,用rpop命令在list尾取出数据。
3.应用场景
在App后台中,Redis也经常被用来作为消息队列,理由如下:
·因为App后台中已经使用了Redis,消息队列也使用Redis可以减少APP开发人员的维护成本和学习新知识的成本。
·Redis的读写速度能达到每秒上万次,能满足大多数系统的性能要求。
App后台常见的发送短信功能就需要用到队列,因为发送短信的速度慢,所以需要用到队列来实现异步操作,整个架构如图7-7所示。
制作APP经验示意图7—7发送短信的架构图
发送短信的过程如下。
(1)应用程序把短信相关的信息(包括手机号、内容)转换为jSON字符串后放入“发送短信消息队列”
(2)发送短信的守护进程是个在后台不断运行的程序,其不断地检测“发送短信消息队列”是否为空,如果不为空,就把信息从消息
(3)发送短信的守护进程把短信的内容发送短信平台的接口
APP开发经验之set-无序且不重复的元素集合
1.简介
在Redis中set类型可以看作是没有排序、不重复的元素集合,可以在该类型上添加删除元素或者判断某元素存在等操作(这些操作的时间复杂度是0(1))。
set集合中不允许出现重复的元素,换句话说,如果多次添加相同的元素set中只保留一份。当用户需要存储很多的数据,但又希望不出现重复的数据,这个特性就非常有用。另外set类型还提供多个set之间的聚合计算,如求set之间的交集、差集或并集,这些操作是在Redis内部完成.效率特别高。
2.数据模型
set类型的数据模型如图7-8所示
制作APP实操经验示意图7-8set的数据模型
在图7-8中set类型的Value部分是系列不重复的数据集合。
3.应用场景
社交类型的App中,有的App当用户进入了一个用户的主页后会提示共同好友的信息,以方便用户扩展社交关系。提示共同好友的页面如图7-9所示。
获取共同好友的算法如下:把用户a的所有好友取出来遍历,和用户b的所有好友比较,如果相同的话就是共同好友。
上面描述的算法其实就是求两个集合交集。在Redis的set类型的操作中已经包含了求交集的操作slnter。如果把用户a的好友存储在集合a中.把用户b的好友存储在集合b中,通过求集合a和集合b的交集,就能获取用户a和用户b的共同好友,如图7-10所示。
APP制作经验示意图7-10用户A和用户B的好友集合
在图7-10中,Redis中用户a的好友集合是“Jeff,lom,jack”,用户b的好友集合是“jack,lerrv,Mike”,对用户a和用户b的好友集合求交集,就能得到用户a和用户b的共同好友是jack。好了,APP开发公司关于利用Redis获取id数据的方法(二)本文就分享到这里。博纳网络会在下期的文章中继续就其他三种方法进行介绍。谢谢关注。