組み込みRedis述語を使用する

「組み込みRedis述語を使用する」の編集履歴(バックアップ)一覧はこちら

組み込みRedis述語を使用する」(2014/05/08 (木) 13:40:08) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

/* %redis組み込み関数 redis_connect redis_free_context redis_command redis_command_hate_integer redis_version redis_is_disconnected */ redis_init:-redis_connect('127.0.0.1',6379,3000,C),assert(redis_ID(C)),!. resis_end:-abolish(redis_ID,1),redis_free_context(C). resis_set(K,V):-redis_ID(C),!,redis_command(C,[set,K,V],_,_). resis_get(K,V):-redis_ID(C),!,redis_command(C,[get,K],_,V). resis_del(K):-redis_ID(C),!,redis_command(C,[expire,K,'1'],_,_). %,s_sleep(500), resis_count(K):-redis_ID(C), redis_command(C,[get,K],T,V),name(A,V),term_atom(I,A),!,N is I+1, redis_command(C,[set,K,N],T,V).
組み込みredisは今のところLinuxしか対応していないようです。 /* %redis組み込み関数 redis_connect redis_free_context redis_command redis_command_hate_integer redis_version redis_is_disconnected */ redis_init:-redis_connect('127.0.0.1',6379,3000,C),assert(redis_ID(C)),!. resis_end:-abolish(redis_ID,1),redis_free_context(C). resis_set(K,V):-redis_ID(C),!,redis_command(C,[set,K,V],_,_). resis_get(K,V):-redis_ID(C),!,redis_command(C,[get,K],_,V). resis_del(K):-redis_ID(C),!,redis_command(C,[expire,K,'1'],_,_). %,s_sleep(500), resis_count(K):-redis_ID(C), redis_command(C,[get,K],T,V),name(A,V),term_atom(I,A),!,N is I+1, redis_command(C,[set,K,N],T,V). なのでwindowsではs_childを使用してresis_cliを子プロセスとして使うしかないです。 test:- s_child('redis-server',[],I1,O1,ID1), s_sleep(1000), %サーバ立ち上げのための時間。無いとgetで反応が来ず固まるので必須。 s_child('redis-cli',[],I2,O2,ID2), f(I2,O2,10,"TEST"), seen(O1),told(I1), seen(O2),told(I2), s_kill(ID1,9),s_kill(ID2,9). f(I,O,0,W):-!. f(I,O,N,W):- a(W),!, append("get ",W,X1), get_redis(I,O,X1,D),write('D='),write(D),nl, append("del ",W,X2), del_redis(I,O,X2), name(N,N2), appends(["set ",W," ",N2,"."],X3), set_redis(I,O,X3), NN is N -1, f(I,O,NN,W). f(I,O,N,W):-!, assert(a(W)), name(N,N2), appends(["set ",W," ",N2,"."],X), set_redis(I,O,X), NN is N -1, f(I,O,NN,W). set_redis(I,O,S):- puts(I,S), %[46]="."をトリガにしてデータを取得する。 get0(O,79), % X1 is 79, get0(O,75), % X2 is 75, %[79,75]="OK" get0(O,10). % X3 is 10. get_redis(I,O,S,Y):- puts(I,S), get0(O,X),gets(O,X,Y-Y), get0(O,10). %X2 is 10. del_redis(I,O,S):- puts(I,S), get0(O,49), %X1 is 49, get0(O,10). %X2 is 10. %[10,49]="改行 1" 1は"set TEST"で設定したTESTの登録数。 append0([],L,L):-!. append0([A|L],R,[A|LR]):-!,append0(L,R,LR). appends([A],A):-!. appends([A1,A2|L],T):-append0(A1,A2,A3),appends([A3|L],T). gets(S,46,T-[]):- !. gets(S,X,T-[X|L]):-get0(S,XX),gets(S,XX,T-L). puts(I,[]):-!,nl(I). puts(I,[A|L]):-put(I,A),puts(I,L).

表示オプション

横に並べて表示:
変化行の前後のみ表示: