delphi redisclient测试

这篇具有很好参考价值的文章主要介绍了delphi redisclient测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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方法需要自行添加。文章来源地址https://www.toymoban.com/news/detail-786082.html

到了这里,关于delphi redisclient测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 单元测试(unit testing)到底是什么?

    做开发的同学应该都听说过单元测试(unit testing),因为对单元测试的理解程度不同,所以对单元测试的看法也可能有所不同。本文就来深入讲解一下单元测试的概念、作用和是否需要做单元测试。 单元测试(unit testing)是软件开发中的一种最低级别的测试方式,对软件中的

    2024年02月08日
    浏览(43)
  • Python 面试:单元测试unit testing & 使用pytest

    calc.py test_calc.py employee.py test_employee.py 输出为: setupClass setUp test_apply_raise tearDown .setUp test_email tearDown .setUp test_fullname tearDown .teardownClass Ran 3 tests in 0.001s OK employee.py test_employee.py 输出为: setupClass setUp test_apply_raise tearDown .setUp test_email tearDown .setUp test_fullname tearDown .setUp tearDown

    2024年02月10日
    浏览(35)
  • 前端开发中的单元测试(unit testing)和端到端测试(end-to-end testing)

    聚沙成塔·每天进步一点点 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而

    2024年02月03日
    浏览(29)
  • 【WinAPI详解】<CreateWindowEx详解>

    函数原型: 目录 1.        DWORD        dwExStyle        //窗口的扩展风格(加强版专有) 2.        DWORD        dwStyle        //窗口的基本风格 3.        LPCTSTR        lpClassName        //已经注册的窗口类名称 4.        实例 参数解析: 参数

    2024年02月12日
    浏览(32)
  • C#调用WinAPI部分命令

     C#是针对WIndows而生的,开发WIndows应用最快。然而想要让自己程序进阶,就不需深入Windows底层,WinAPI为我们提供了一把利刃。 目录 1、查找窗口句柄 2、查找窗口内子对象 3、指定窗口样式 4、指定窗口扩展样式 5、调整窗口大小Z轴(层叠) 6、获得窗口样式 7、向窗口发送命

    2024年01月19日
    浏览(29)
  • winapi获取鼠标指向当前元素

            最近接到这么个需求,要求获取 windows 下鼠标当前位置的所在应用。代码如下:         如代码中注释,主要就是用到  GetCursorPos() 、 WindowFromPoint() 和  GetWindowText() 三个方法。编译、执行。当鼠标放在当前 vscode 窗口时:         控制台 window text 一行显示

    2024年02月10日
    浏览(43)
  • SpringBoot单元测试java.lang.IllegalStateException Could not initialize plugin: interface org.mockito解决方案

      大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作

    2024年02月04日
    浏览(29)
  • winapi模拟鼠标按住左键拖动

            继前文《windows下通过uiAutomation技术获取ui元素》介绍获取ui元素信息后,还需要对信息进行修改,但是 uiAutomation 技术并未提供可修改的 api ,只能另辟他径看看了。         以 camera raw 为例,已知的是可将鼠标放在指定区域位置,然后按下左键并左右拖动,也

    2024年02月16日
    浏览(30)
  • 多线程/WinAPI线程退出方式比较分析

    关于如何终止 Windows 线程,在 MSDN Terminating a Thread 一文中列举的很详细: A thread executes until one of the following events occurs: The thread calls the ExitThread function. 调用 WINAPI ExitThread 线程退出函数。 Any thread of the process calls the ExitProcess function. 调用 WINAPI ExitProcess 进程退出函数。 The thre

    2024年02月08日
    浏览(26)
  • idea运行单元测试报Could not find method on interface org.apache.ibatis.executor.Executor named queryCursor

    出现上面的问题是由于idea插件MyBatis Log EasyPlus导致产生的 直接关闭掉这个插件,就能正常运行了 org.apache.ibatis.exceptions.PersistenceException:  ### Error opening session.  Cause: org.apache.ibatis.plugin.PluginException: Could not find method on interface org.apache.ibatis.executor.Executor named queryCursor. Cause: java

    2024年04月28日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包