历史版本20 :Redis数据集 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 版本

 报表服务器版本JAR 包版本 插件版本 
10.02019-03-29V7.1

1.2 应用场景

Redis 缓存数据库作为最为的流行的缓存数据库之一,经常被使用在各种需要高速访问的场景下,偶尔也需要把缓存中的数据取出来做一些简单的查看和分析。但是 Redis 作为 NoSQL数据库,在 FineReport 中没有办法直接使用 JDBC 或者 JNDI 连接访问。

1.3 功能描述

Redis 插件使设计器连接 Redis 数据库并取数,且支持哈希表、列表、集合以及有序集合。

注:该插件仅支持在 设计器建立数据连接,不支持 [平台]数据连接 。 

2. 插件介绍编辑

2.1 插件安装

点击下载插件:Redis数据集

设计器插件安装方法请参见:设计器插件管理

服务器安装插件方法请参见:服务器插件管理

3. 示例编辑

3.1 新建 Redis 数据连接

1)点击服务器>定义数据连接,如下图所示:

25.png

2)选择 Redis 并输入数据库地址、端口号和密码,如下图所示:

63.png

3)配置 Redis 连接的连接池信息,如下图所示:

6.png

4)如果当前报表服务器无法直接连接 Redis 服务器,而是需要通过跳板机器连接 Redis 服务器,则需要配置跳板服务器,如下图所示:

42.png

注意:一旦配置了跳板服务器,连接池配置即失效,只能使用单个连接。

3.2 Redis 数据集

3.2.1 新建 Redis 数据集

点击+,选择 Redis 数据集,如下图所示:

1582271216562511.png

3.2.2 编写 Redis 查询语句

1)根据参数 $key ,查询 redis 中的值,相当于调用命令:get name ,如下图所示:

62.png

注意:左侧的列表是用于展示搜索出来的 key 值的,方便编写 SQL 语句的时候使用列出来的 key 值。

3.2.3 预览效果

查询预览结果如下图所示:

1582274732489461.png

3.2.4 支持的命令

操作符  示例代码   说明 
  get get hellokey 获取 hellokey 对应的值
  mget mget foo bar zyx  获取参数列表汇总所有的键对应的值
 hkeys hkeys website 获取指定哈希表中的所有键
 hget hget site redis 
 hmget hmget pet dog cat返回哈希表key中,一个或多个给定域的值,可参考 http://redisdoc.com/hash/hmget.html
  hgetall  hgetall contry  获取哈希表中所有的键值对
  lrange  lrange score 0 -1  获取列表中指定位置的值
 smembers smembers name 获取无序列表中参数值对应的所有元素
 zrange zrange 

3.3 Redis 程序数据集

Redis 程序数据集,是使用支持 ES6 的 JavaScript 脚本语句,来从 Redis 查询数据并进行数据转换的数据集,该数据使用非常灵活,但需要有一定的 JavaScript 脚本知识。

注1:该类型的数据集需要使用 2019-03-10 之后的 JAR 包。

注2:可以在数据集中选择使用的引擎类型,V8 为高速引擎,支持 ES6 语法,但低版本 Linux 服务器可能不支持,默认为 JRE 自带的引擎,效率较低但兼容性好。

注3:如果服务器不支持 V8 引擎,会降级为使用 JDK 内置的 Nashon 引擎,只能使用 ES5 语法。

注4:可以使用脚本语句 return merge([[console.engine()]], ["engine"]);  查看当前服务器使用的脚本引擎。

3.3.1 新建 Redis 程序数据集

222

3.3.2 编写 Redis 查询脚本

1)输入对应的脚本,如下图所示:

5.png

2)得到预览结果如下图所示:

22.png

3)同时也可以在脚本中传递参数,如下图中的 ${key} ,表示 key 是从报表中传递的参数,如下图所示:

622.png

3.3.3 内置函数和变量

名称

作用

类型

注意事项

redis表示 redis 客户端变量
redis.get等同于命令 get函数
redis.hget等同于命令 hget函数
redis.hkeys等同于命令 hkeys函数
redis.hmget等同于命令 hmget函数
redis.hgetAll等同于命令 hgetall函数注意是驼峰式的方法名字,不是全小写
redis.keys等同于命令 keys函数
redis.lrange等同于命令 lrange函数
redis.mget等同于命令 mget函数
redis.smembers等同于命令 smembers函数
unique(array)将数组进行去重,主要用于列名处理函数
console.log(info)输出调试信息,会在日志文件中输出 INFO 级别的信息函数
console.error(err)输出错误级别的信息,会在日志文件中输出 ERROR 级别的信息函数
console.engine输出使用的脚本引擎函数V8或者Nashorn
merge(table, column)合并数据集的内容和列名对象,用于给数据集返回正确的数据结构函数第一个参数必须是一个二维数组,第二个参数必须是一个一维数组

注意:所有 Redis 函数均返回的是字符串,如果需要转换成数组或者对象,可以使用 JSON.parse() 函数将字符串转换为 JavaScript 对象。

3.3.4 执行外部脚本

在 Redis 程序数据集中,可以使用 Files.require(filePath) 来引入外部脚本文件,示例如下:

// 相对路径,读取的是 下的文件
// Files.require("");表示读取 C 盘下的文件
Files.require("");
return merge(content, column);

其中 query.js 文件的位置为:报表工作目录/resources/script/query.js

使用相对路径的时候会读取报表工作目录下的文件,使用绝对路径时,会直接读取该文件。