首页 > 数据库 >delphi redisclient测试

delphi redisclient测试

时间:2024-01-13 16:36:09浏览次数:37  
标签:end delphi redis ret redisclient Add Value 测试 var

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    BitBtn1: TBitBtn;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
  Redis.Commons, redis.Command, redis.NetLib.INDY, redis.Client;

var
  redis: IRedisClient;
  cmd: IRedisCommand;

procedure log(msg: string);
begin
  Form1.Memo1.Lines.Add(msg);
end;

procedure TForm1.FormCreate(Sender: TObject);
  procedure addMsg;
  begin
    if not redis.EXISTS('myStream') then
    begin
      var xaddCmd := NewRedisCommand('XADD').Add('myStream').Add('*').Add('name').Add('jjw');
      var ret := redis.ExecuteWithStringResult(xaddCmd);
      if ret.HasValue then
        Log(ret.Value);
    end;
  end;

  procedure getGroups;
  begin
    cmd := NewRedisCommand('XINFO').Add('GROUPS').Add('myStream');     //redis 无法处理
    var ret := redis.ExecuteAndGetMatrix(cmd);
    if ret.HasValue then
    begin
      var c := Length(ret.Value);
      var v := ret.Value[0];
      for var I := 0 to Length(v.Value)-1 do
        log(v.Value[I].Value);
    end;
  end;

  procedure clearGroup;
  begin
    cmd := NewRedisCommand('XGROUP').Add('DESTROY').Add('myStream').Add('myGroup');     //会清空未读,未确认的消息
    var ret := redis.ExecuteWithStringResult(cmd);
  end;

  procedure createGroup;
  begin
    var createGroupCmd := NewRedisCommand('XGROUP').Add('CREATE').Add('myStream').Add('myGroup').Add('0');  // $:最新消息, 即未读过的。  0:从最后一条读
    var ret := redis.ExecuteWithStringResult(createGroupCmd);
    if ret.HasValue then
      Log(ret.Value);
  end;

  procedure readMsg;
  begin
    cmd := NewRedisCommand('XREADGROUP').Add('GROUP').Add('myGroup').Add('cm').Add('COUNT').Add(2).Add('STREAMS').Add('myStream').Add('>');  //0,未ACK(确认)的未读消息   > 未读过的消息
    var val := redis.ExecuteAndGetRESPArray(cmd);
    if val<>nil then
      memo1.Text := val.ToJSON(); //[["myStream",[["1704960677439-0",["name","haha","age","100"]]]]]
//    Memo1.Text := val.ToString; //[["myStream",[["1704960677439-0",["name","haha","age","100"]]]]]
//    var y1 := val[0].ArrayValue[0].Value;  //myStream
//    Log(val[0].Items[1].Items[0].Items[0].Value);  //1704960677439-0
//    Log(val[0].Items[1].Items[0].Items[1].Items[0].Value);  //name
  end;
begin
  redis := NewRedisClient('192.168.88.129');

  getGroups;

  addMsg;
  try
    // if not ExistsGroup(groupName) then  //若不判断,捕获异常也可以。
    //   createGroup;
  except
    ;
  end;
  readMsg;
end;

end.

注:

或IRedisClient接口中无ExecuteAndGetMatrix方法需要自行添加。

标签:end,delphi,redis,ret,redisclient,Add,Value,测试,var
From: https://www.cnblogs.com/Jiaojiawang/p/17962507

相关文章

  • RUST web框架axum快速入门教程6之测试
    本文主要讨论axum的测试,axum对于测试的支持还是比较完善的,我们可以测试状态码,HTTP头信息,响应体等内容,因为框架实现的原因,其实axum很依赖tower。往期文章:https://youerning.top/post/axum/quickstart-1https://youerning.top/post/axum/quickstart-2https://youerning.top/pos......
  • 12.弱网测试
    目录 什么是弱网测试使用Charles完成弱网测试什么是弱网测试 按照移动的特性,一般应用低于3G、弱信号的Wifi可以划分为弱网弱网测试是健壮性测试的重要部分,对移动端测试必不可少弱网测试主要进行弱网状态下的功能测试,同时关注用户体验使用Charles......
  • 50、Flink的单元测试介绍及示例
    文章目录Flink系列文章一、Flink测试概述二、测试用户自定义函数1、单元测试无状态、无时间限制的UDF1)、示例-mapFunction2)、示例-flatMapFunction2、对有状态或及时UDF和自定义算子进行单元测试1)、DataStreamAPI测试依赖2)、TableAPI测试依赖3)、flatmapfunction单元测试......
  • 无涯教程-Maven - 构建和测试项目
    无涯教程在"CreateingProject"创建项目一章中学到的是如何使用Maven创建Java应用程序。现在将看到如何构建和测试应用程序。转到创建Java应用程序的C:/MVN目录。打开consumerBanking文件夹。您将看到POM.xml文件,其中包含以下内容。<projectxmlns="http://maven.apache.......
  • [JMeter] JMeter的测试报告格式转换(.jtl => html)
    0序言近期在jmeter测试服务器上跑压测脚本,跑完后,生成.jtl的测试报告文件。但这份文件不便于直接阅读(尤其是统计分析能力欠缺),我需要转为html。1使用方式CASE1:基于JTL测试报告文件,转为HTML测试报告set"BASE_DIR=E:\work_data\xxxx\"jmeter-g"%BASE_DIR%\alarm_report-......
  • 为内蒙古自治区计量测试研究院提供秒表时间检定仪、时间检定仪,秒表检定仪,日差检定仪
    我公司自主研发生产的秒表检定仪在内蒙古自治区计量测试研究院投入使用,这款时间检定仪操作简便,可测量几乎所有类型的秒表。内蒙古自治区计量测试研究院成立于1955年9月,是自治区政府依法设置的隶属于自治区市场监管局的副厅级公益二类事业单位,是经国家市场监管总局考核授权的法定计......
  • 无涯教程-JUnit - 参数化测试
    JUnit4引入了称为参数化测试的新功能,参数化测试允许开发人员使用不同的值一次又一次地运行相同的测试。创建参数化测试需要遵循五个步骤。使用@RunWith(Parameterized.class)注释测试类。创建一个用@Parameters注释的公共静态方法,该方法返回对象的集合作为测试数据集。创建一......
  • 无涯教程-JUnit - 异常测试
    JUnit提供了跟踪代码异常处理的选项,您可以测试代码是否引发期望的异常。expected参数与@Test注释一起使用。让无涯教程看看@Test(expected)的作用。创建测试类在C:\>JUNIT_WORKSPACE中创建一个要测试的Java类,例如MessageUtil.java。在printMessage()方法内添加错误条件。......
  • 懂车帝与车企争论的背后,新能源测试标准何时迎来终局?
    文|AUTO芯球作者 | 李欣2023年12月17日,蔚来创始人李斌亲自下场!驾驶ET7从上海出发,经过超14小时的行驶后,达成一块电池行驶超过1000公里的成绩,这一直播引起外界的广泛关注。这不禁让人与”懂车帝冬测“联想到一起,12月14日,懂车帝在漠河举行了冬测开放日,共邀请了多家车企、媒体等现......
  • 为上海市计量测试技术研究院提供时间继电器测试仪、时间继电器延时时间检测仪延时时间
    我司自主研发生产的时间继电器测试仪在上海市计量测试技术研究院投入使用,该测试仪用于继电器通电/断电/接通/断开延时型电子式时间继电器测试,以及时间间隔测量,它具有内外频标相互切换直接输出交直流电压及交流电压控制端口,通过串口直接输出比对结果给计算机。适合计量校准部门及科......