Redis应用开发
要求:数据库
- 了解Redis应用场景
- 掌握Redis二次开发环境搭建
- 掌握Redis业务开发
Redis简介后端
- Redis是一个基于网络的,高性能key-value内存数据库
- Redis根memcached相似,不过数据可持久化,并且支持的数据类型很丰富。支持在服务端计算集合的并、交和补集等,还支持多种排序功能。
Redis使用场景有以下几个特色:缓存
- 高性能
- 低延迟
- 丰富数据结构存取
- 支持持久化
Redis应用场景介绍
Redis提供了灵活多变的数据结构和数据操做,主要应用于以下场景:安全
- 取最新N个数据的操做,好比典型的取某网站的最新文章。
- 排行榜应用,取TOP N操做。
- 须要精准设定过时时间的应用。
- 计数器应用,好比记录用户访问网站的次数。
- 构建队列系统
- 缓存,如缓存关系数据库中的频繁访问的表数据。
架构回顾网络
- 无中心自组织的结构,节点之间使用Gossip协议来交换节点状态信息。
- 个节点维护Key->Server的映射关系。
- Client能够向任意节点发起请求,节点不会转发请求,只是重定向Client
- 若是在Client第一次请求之间,Cluster拓扑发生改变,则第二次重定向请求将被再次重定向,直到找到正确的Server为止。
Redis应用开发
设计Redis数据结构数据结构
- 取最新N个数据的操做:list
- 排行榜应用,取TOP N操做。以某个条件为权重,好比按顶的次数排行:sorted set。
- 利INCR,DECR命令来构建计数器系统。、
- Uniq操做,获取某段时间全部数据排重值:set。
- 使用list能够构建队列系统
Redis应用开发
根据场景开发工程架构
- 梳理业务场景流
- 设计各模块接口
- 若是使用的是安全集群,须要进行安全认证
- 熟悉Redis提供的相应API
- 调用业务须要的API实现各功能
数据结构设计app
- 计算过程当中使用的用户信息使用hash结构存取,KEY设计为userinfo-<user id>,
- field为用户的属性。
数据读写原则memcached
- MR任务天天定时将用户信息从后端存储源(HBase)批量导入Redis中。
- 业务系统获取数据时,先从Redis中获取,获取不到再取后端HBase获取即实时计算,并同步写入到Redis。
样例说明-String类型操做性能
- set:将字符串值value关联到key
- get:返回key所关联的字符串值,
- setex:将字符串值value关联到key,并设置key的生存时间
- append:将value追加到key原值的末尾,相似Java String类型的“+”操做。
样例说明-List类型操做
- Ipush/rpush:往列表头/尾添加一个元素。
- Irange:返回列表中start至end之间的元素
- llen:返回列表的长度
- lpop/rpop:从列表头/尾获取一个元素,并将其中列表中删除。
样例说明-Hash类型操做
- hset
- hget
- hgettall
- hmset
- hincrby
- hkeys
- hvals
- hmget
- hexists
- hdel