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方法需要自行添加。
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论