it编程 > 编程语言 > Delphi

delphi redisclient测试

167人参与 2024-05-12 Delphi

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方法需要自行添加。

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

Delphi 实现刘谦春晚魔术

05-12

mormot2 笔记(二) Http服务的简单搭建

05-12

mORMot2 生成和解析 JSON

05-12

mORMot2 获取数据集1

05-12

mORMot 1.18 第07章 简单的读写操作

05-12

mORMot 1.18 第06章 概念

05-12

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论