FusionInsight大数据开发---Redis应用开发
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实现各功能
数据结构设计
- 计算过程中使用的用户信息使用hash结构存取,KEY设计为userinfo-<user id>,
- field为用户的属性。
数据读写原则
- 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
FusionInsight大数据开发---Redis应用开发的更多相关文章
- FusionInsight大数据开发学习总结(1)
FusionInsight大数据开发 FusionInsight HD是一个大数据全栈商用平台,支持各种通用大数据应用场景. 技能需求 扎实的编程基础 Java/Scala/python/SQL/sh ...
- 大数据全栈式开发语言 – Python
前段时间,ThoughtWorks在深圳举办一次社区活动上,有一个演讲主题叫做“Fullstack JavaScript”,是关于用JavaScript进行前端.服务器端,甚至数据库(MongoDB) ...
- 为什么说Python 是大数据全栈式开发语言
欢迎大家访问我的个人网站<刘江的博客和教程>:www.liujiangblog.com 主要分享Python 及Django教程以及相关的博客 交流QQ群:453131687 原文链接 h ...
- FusionInsight大数据开发---Hive应用开发
Hive应用开发 了解Hive的基本架构原理 掌握JDBC客户端开发流程 了解ODBC客户端的开发流程 了解python客户端的开发流程 了解Hcatalog/webHcat开发接口 掌握Hive开发 ...
- FusionInsight大数据开发---MapReduce与YARN应用开发
MapReduce MapReduce的基本定义及过程 搭建开发环境 代码实例及运行程序 MapReduce开发接口介绍 1. MapReduce的基本定义及过程 MapReduce是面向大数据并行处 ...
- FusionInsight大数据开发---HDFS应用开发
HDFS应用开发 HDFS(Dadoop Distributed File System) HDFS概述 高容错性 高吞吐量 大文件存储 HDFS架构包含三部分 Name Node DataNode ...
- 一文总结高并发大数据量下MySQL开发规范【军规】
在互联网公司中,MySQL是使用最多的数据库,那么在并发量大.数据量大的互联网业务中,如果高效的使用MySQL才能保证服务的稳定呢?根据本人多年运维管理经验的总结,梳理了一些核心的开发规范,希望能给大 ...
- FusionInsight大数据开发--HBase应用开发
HBase应用开发 HBase的定义 HBase是一个高可靠.高性能.面向列.可伸缩的分布式存储系统. 适合于存储大表数据,可以达到实时级别. 利用Hadoop HDFS 作为其文件存储系统,提供实时 ...
- FusionInsight大数据开发---Flume应用开发
Flume应用开发 要求: 了解Flume应用开发适用场景 掌握Flume应用开发 Flume应用场景Flume的核心是把数据从数据源收集过来,在送到目的地.为了保证输送一定成功,发送到目的地之前,会 ...
随机推荐
- android studio学习---怎么创建一个新的module并且再次运行起来(在当前的project里面)
选择File->new module出现的界面,选择android application选择下一步,就出现了和刚刚一样的流程了,一步步创建完成即可. 我们看到多了个secondAndroid的 ...
- Python的变量命名规则
1.只能用大小写字母与“_”(下划线) 2.数字不能用在开头,如:12tea 3.不能使用空格 4.C语言的变量命名规则如上相同
- MySQL Error--InnoDB Table mysqlinnodb_index_stats has length mismatch in the column
使用MySQL 5.7.24版本的安装文件替换MySQL 5.7.19版本的安装文件,数据库复制频繁中断,查看error日志发现下面错误: [Warning] InnoDB: Table mysql/ ...
- socket套接字及粘包问题
socket套接字 1.什么是socket socket是一个模块,又称套接字,用来封装互联网协议(应用层以下的层) 2.为什么要有socket 实现应用层以下的层的工作,提高开发效率 3.怎么使用s ...
- Linux 换 jdk 版本 环境没有生效
Linux 换 jdk 版本 环境没有生效 把 jdk 1.7 换成 1.8, 路径设置好了后 用了下面两个都没有生效 . /etc/profile source ~/.bashrc 还是 jdk 1 ...
- Scrapy笔记12- 抓取动态网站
Scrapy笔记12- 抓取动态网站 前面我们介绍的都是去抓取静态的网站页面,也就是说我们打开某个链接,它的内容全部呈现出来. 但是如今的互联网大部分的web页面都是动态的,经常逛的网站例如京东.淘宝 ...
- [codevs1286]郁闷的出纳员
题目描述 Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复 ...
- Windbg Call Stack(调用堆栈)窗口的使用
调用堆栈是指向程序计数器当前位置的函数调用链.调用堆栈的顶部函数是当前函数,下一个函数是调用当前函数的函数,依此类推.显示的调用堆栈基于当前程序计数器,除非更改寄存器上下文. 在 WinDbg 中,可 ...
- [RN]react-native-scrollable-tab-view和FlatList手势冲突解决
问题描述: react-native-scrollable-tab-view叠加react-native-scrollable-tab-view再加上FlatList FlatList向下拉时,会造成 ...
- 元素的alt和title有什么异同?
①alt作为图片的替代文字出现,title作为图片的解释文字出现. ②alt属性应用较少,如img.area.input中,title应用较多,如a.form.input.还有div.p这些块级元素都 ...