Redis应用开发

要求:

  1. 了解Redis应用场景
  2. 掌握Redis二次开发环境搭建
  3. 掌握Redis业务开发

Redis简介

  • Redis是一个基于网络的,高性能key-value内存数据库
  • Redis根memcached类似,不过数据可持久化,而且支持的数据类型很丰富。支持在服务端计算集合的并、交和补集等,还支持多种排序功能。

Redis使用场景有如下几个特点:

  1. 高性能
  2. 低延迟
  3. 丰富数据结构存取
  4. 支持持久化

Redis应用场景介绍
Redis提供了灵活多变的数据结构和数据操作,主要应用于如下场景:

  1. 取最新N个数据的操作,比如典型的取某网站的最新文章。
  2. 排行榜应用,取TOP N操作。
  3. 需要精准设定过期时间的应用。
  4. 计数器应用,比如记录用户访问网站的次数。
  5. 构建队列系统
  6. 缓存,如缓存关系数据库中的频繁访问的表数据。

架构回顾

  1. 无中心自组织的结构,节点之间使用Gossip协议来交换节点状态信息。
  2. 个节点维护Key->Server的映射关系。
  3. Client可以向任意节点发起请求,节点不会转发请求,只是重定向Client
  4. 如果在Client第一次请求之间,Cluster拓扑发生改变,则第二次重定向请求将被再次重定向,直到找到正确的Server为止。

Redis应用开发
设计Redis数据结构

  1. 取最新N个数据的操作:list
  2. 排行榜应用,取TOP N操作。以某个条件为权重,比如按顶的次数排行:sorted set。
  3. 利INCR,DECR命令来构建计数器系统。、
  4. Uniq操作,获取某段时间所有数据排重值:set。
  5. 使用list可以构建队列系统

Redis应用开发
根据场景开发工程

  1. 梳理业务场景流
  2. 设计各模块接口
  3. 如果使用的是安全集群,需要进行安全认证
  4. 熟悉Redis提供的相应API
  5. 调用业务需要的API实现各功能

数据结构设计

  • 计算过程中使用的用户信息使用hash结构存取,KEY设计为userinfo-<user id>,
  • field为用户的属性。

数据读写原则

  • MR任务每天定时将用户信息从后端存储源(HBase)批量导入Redis中。
  • 业务系统获取数据时,先从Redis中获取,获取不到再取后端HBase获取即实时计算,并同步写入到Redis。

样例说明-String类型操作

  1. set:将字符串值value关联到key
  2. get:返回key所关联的字符串值,
  3. setex:将字符串值value关联到key,并设置key的生存时间
  4. append:将value追加到key原值的末尾,类似Java String类型的“+”操作。

样例说明-List类型操作

  1. Ipush/rpush:往列表头/尾添加一个元素。
  2. Irange:返回列表中start至end之间的元素
  3. llen:返回列表的长度
  4. lpop/rpop:从列表头/尾获取一个元素,并将其中列表中删除。

样例说明-Hash类型操作

    • hset
    • hget
    • hgettall
    • hmset
    • hincrby
    • hkeys
    • hvals
    • hmget
    • hexists
    • hdel

FusionInsight大数据开发---Redis应用开发的更多相关文章

  1. FusionInsight大数据开发学习总结(1)

    FusionInsight大数据开发 FusionInsight HD是一个大数据全栈商用平台,支持各种通用大数据应用场景. 技能需求 扎实的编程基础 Java/Scala/python/SQL/sh ...

  2. 大数据全栈式开发语言 – Python

    前段时间,ThoughtWorks在深圳举办一次社区活动上,有一个演讲主题叫做“Fullstack JavaScript”,是关于用JavaScript进行前端.服务器端,甚至数据库(MongoDB) ...

  3. 为什么说Python 是大数据全栈式开发语言

    欢迎大家访问我的个人网站<刘江的博客和教程>:www.liujiangblog.com 主要分享Python 及Django教程以及相关的博客 交流QQ群:453131687 原文链接 h ...

  4. FusionInsight大数据开发---Hive应用开发

    Hive应用开发 了解Hive的基本架构原理 掌握JDBC客户端开发流程 了解ODBC客户端的开发流程 了解python客户端的开发流程 了解Hcatalog/webHcat开发接口 掌握Hive开发 ...

  5. FusionInsight大数据开发---MapReduce与YARN应用开发

    MapReduce MapReduce的基本定义及过程 搭建开发环境 代码实例及运行程序 MapReduce开发接口介绍 1. MapReduce的基本定义及过程 MapReduce是面向大数据并行处 ...

  6. FusionInsight大数据开发---HDFS应用开发

    HDFS应用开发 HDFS(Dadoop Distributed File System) HDFS概述 高容错性 高吞吐量 大文件存储 HDFS架构包含三部分 Name Node DataNode ...

  7. 一文总结高并发大数据量下MySQL开发规范【军规】

    在互联网公司中,MySQL是使用最多的数据库,那么在并发量大.数据量大的互联网业务中,如果高效的使用MySQL才能保证服务的稳定呢?根据本人多年运维管理经验的总结,梳理了一些核心的开发规范,希望能给大 ...

  8. FusionInsight大数据开发--HBase应用开发

    HBase应用开发 HBase的定义 HBase是一个高可靠.高性能.面向列.可伸缩的分布式存储系统. 适合于存储大表数据,可以达到实时级别. 利用Hadoop HDFS 作为其文件存储系统,提供实时 ...

  9. FusionInsight大数据开发---Flume应用开发

    Flume应用开发 要求: 了解Flume应用开发适用场景 掌握Flume应用开发 Flume应用场景Flume的核心是把数据从数据源收集过来,在送到目的地.为了保证输送一定成功,发送到目的地之前,会 ...

随机推荐

  1. postgresql设置max_connections太大无法启动 (转载)

    本篇随笔转载自https://my.oschina.net/u/2381678/blog/552346. 在生产环境postgresql中,需要调整最大链接数,但是调整后无法启动 错误的意思就是内核中 ...

  2. HDU 2612 Find a way 题解

    Find a way Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  3. python基本数据类型的时间复杂度

    1.list 内部实现是数组 2.dict 内部实现是hash函数+哈希桶.一个好的hash函数使到哈希桶中的值只有一个,若多个key hash到了同一个哈希桶中,称之为哈希冲突. 3.set 内部实 ...

  4. libpcap工具包使用go交叉编译开发android

    命令使用 libpcap交叉编译 cd /tmpwget http://www.tcpdump.org/release/libpcap-1.8.1.tar.gztar xvf libpcap-1.8. ...

  5. 云服务器ECS(Elastic Compute Service),知识点

    资料 网址 什么是云服务器ECS https://help.aliyun.com/document_detail/25367.html?spm=a2c4g.11186623.6.544.4e1e376 ...

  6. 修改opencart extension插件代码后无法重新安装的解决办法

    有时我们在为opencart安装一些插件后,发现有些地方需要细微的调整,然后去修改插件代码重新安装,但是却没有成功.开始有点怀疑是不是不能修改代码,但也不至于啊,不然开发者怎么制作插件.应该是哪里出了 ...

  7. FastDFS 分布式文件系统(部署和运维)

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/KamRoseLee/article/det ...

  8. scrapy框架--?乱码unicode

    安装 pip install scrapy 建立一个爬虫项目 scrapy startproject 项目名称 scrapy startproject itcast 进入itcast文件夹 生成一个爬 ...

  9. python语言(七)面向对象、异常处理

    一.异常处理 python解释器检测到错误,触发异常(也允许程序员自己触发异常).程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关).如果捕捉成功则进入另外一个处理分 ...

  10. css如何让父元素下的所有子元素高度相同

    小颖最近做的项目中要实现一个样式 ,小颖怕自己忘记了,写个随笔记下来 需求父元素下有多个子元素,并且子元素过多时要实现自动换行,给每个子元素都加了右边框,而每个子元素里的内容多少不一定,这就会产生右边 ...