ToB企服应用市场:ToB评测及商务社交产业平台
标题:
delphi redisclient测试
[打印本页]
作者:
麻花痒
时间:
2024-4-2 10:15
标题:
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方法需要自行添加。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4