ããã¯ããªã«ãããããŠæžãããã®ïŒ
Infinispan 15.0.0.FinalããªãªãŒã¹ãããŸããã
ä»åã¯å€æŽå
容ãå±±çãã«ãªã£ãŠããŠã¡ãã£ãšé©ãã®ã§ãããRESPãšã³ããã€ã³ãïŒRedisãããã³ã«ïŒã§ãµããŒããããŠããã³ãã³ãã
倧éã«å¢ããŠããã®ã§ããã¡ãã確èªããŠã¿ãããšæããŸãã
ããšãã¯ã©ã¹ã¿ãªã³ã°ããã£ãŠã¿ãããšæããŸãã
Infinispanã®RESPãšã³ããã€ã³ã
Infinispanã®RESPãšã³ããã€ã³ãã¯ãInfinispan 14.0ã§è¿œå ãããRedisäºæã®ãšã³ããã€ã³ãã§ãã
Infinispan 14.0のRESPエンドポイントをRedis CLIで試す - CLOVER🍀
ã€ãŸããInfinispan ServerãRedisã®ä»£ãããšããŠäœ¿ãããšãã§ããŸãã
Infinispan 14.0ã®ãªãªãŒã¹ããã°ã®æã«ã¯å°ãååãšãµããŒãããŠããã³ãã³ããåºãŠããããããªã®ã«ã15.0ã«ãªã£ãŠã ãã¶ã¯ããŒãºã¢ãã
ãããŠããæããããŸãã
Infninspan 15.0ã®ãªãªãŒã¹ããã°ã§ã¯ãRedisã®ã»ãšãã©ã®ããŒã¿åãš90以äžã®ã³ãã³ããå®è£
ããŠããŠã以äžã®ç¹ãéåžžã®Redisãš
æ¯èŒããéã®å©ç¹ãšããŠããŸãã
- ãã«ãã¹ã¬ãã ⊠ã¯ã©ã¹ã¿ãªã³ã°ãããªããŠãè€æ°ã®ã³ã¢ã掻çšã§ãã
- P2Pã¯ã©ã¹ã¿ãªã³ã° ⊠ã¯ã©ã¹ã¿ãŒå ã®ããŒãã«ã¯ãã¹ã¿ãŒïŒã¬ããªã«ã®åºå¥ã¯ãªããå®è¡äžã®ããŒãã®è¿œå ïŒåé€ã容æ
- å°çšã®èšå®ãè¡ã£ããã£ãã·ã¥ âŠ è€æ°ã®ãã£ãã·ã¥ãå®çŸ©ã§ããããããç°ãªãèšå®ãå¯èœãã¯ã©ã¹ã¿ãŒã§ãåäœãã
- ã¯ãã¹ãµã€ãã¬ããªã±ãŒã·ã§ã³ã®ãµããŒã
- è€æ°ã®æ°žç¶åãªãã·ã§ã³ ⊠ãã£ã¹ã¯ãããŒã¿ããŒã¹ããã®ä»ã®å€éšã¹ãã¢ã«ä¿åå¯èœ
- å€éšã®IDãããã€ããŒãšã®çµ±å ⊠OAuth2ãLDAPãKerberosãã¯ã©ã€ã¢ã³ãèšŒææžã«ããèªèšŒïŒèªå¯
- å®å šãªãã€ãã©ã€ã³åä¿¡åŠçã«ãããããåŠçã®ã¹ã«ãŒãããã®åäž
- Kubernetes Operator
ãªã©ã
RESPãšã³ããã€ã³ãã§è€æ°ã®ãã£ãã·ã¥ã䜿ãããšããããšã§ãããInfinispan Serverã®ãšã³ããã€ã³ãã«ã²ãšã€ã®Redisçšãã£ãã·ã¥ã
çŽä»ããèšå®ã ã£ããšæãã®ã§ãè€æ°ã®Redisçšãã£ãã·ã¥ãæ±ãããšæããšInfinispan Serverã«ãšã³ããã€ã³ããè€æ°å®çŸ©ããå¿
èŠã
ããããã«æããŸããâŠã
Infinispanã®RESPãšã³ããã€ã³ãã®ããã¥ã¡ã³ãã¯ãã¡ãã
Using the RESP protocol endpoint with Infinispan
15.0ã®æç¹ã§ããå®éšçã¢ãžã¥ãŒã«æ±ããªããšã«ã¯æ³šæãèŠãããã§ããã
Infinispan Server includes an experimental module that implements the RESP3 protocol. The RESP endpoint allows Redis clients to connect to one or several Infinispan-backed RESP servers and perform cache operations.
ãšããã§ãRedisã³ãã³ãã®ãµããŒããå¢ãããšãã話ã§ããã
Infinispan 14.xã®é ãããããšãããã¯ããã³ã£ãããããããå¢ããŠããŸãã
- Using the RESP protocol endpoint with Infinispan 15.x / Using the RESP endpoint / Redis commands
- Using the RESP protocol endpoint with Infinispan 14.x / Using the RESP endpoint / Redis commands
ããã¥ã¡ã³ããããµããŒãããŠããã³ãã³ããæãåºããŠã¿ãŸãã
Infinispan 14.xã®é ã¯16åã§ããã
$ curl -s https://infinispan.org/docs/14.0.x/titles/resp/resp-endpoint.html | grep redis.io | perl -wp -e 's!.+<a href.+">(.+?)</a>.+!$1!' | sort | wc -l 16
Infinispan 15.0ã§ã¯ãªããš154åã«ãªã£ãŠããŸãã
$ curl -s https://infinispan.org/docs/15.0.x/titles/resp/resp-endpoint.html | grep redis.io | perl -wp -e 's!.+<a href.+">(.+?)</a>.+!$1!' | sort | wc -l 154
ã€ã³ã¡ã¢ãªãŒã»ããŒã¿ã°ãªããã§Redisäºæã®æ©èœãæã€ãã®ã¯ãããŸãããããããŸã§å€ãã³ãã³ãããµããŒãããŠãããã®ã¯
èŠãããšãªãæ°ãããŸããã
ãšããã§ãããããRedisã®ã³ãã³ãã£ãŠããã€ããã®ã§ãããïŒ
確èªããŠã¿ãŸãããã®æç¹ã§ã®Redisã®ããŒãžã§ã³ã¯ã7.2.4ã§ãã
$ curl -s https://redis.io/commands | perl -wnl -e 'if (m!.+<h1 class.+>! .. m!</h1>!) { if (not /h1/) { s!^ +!!g; print } }' | sort | wc -l 464
464åãããããã§ãâŠã154åå®è£ ããŠãããŸã ååã«ãæºããªãæãã§ããâŠã
å·®åããšã£ãŠã¿ãŸãã
$ diff <(curl -s https://infinispan.org/docs/15.0.x/titles/resp/resp-endpoint.html | grep redis.io | perl -wp -e 's!.+<a href.+">(.+?)</a>.+!$1!' | sort) <(curl -s https://redis.io/commands | perl -wnl -e 'if (m!.+<h1 class.+>! .. m!</h1>!) { if (not /h1/) { s!^ +!!g; print } }' | sort)
Infinispanã«ãããªããã®ã£ãŠãããã§ããããïŒ
$ diff <(curl -s https://infinispan.org/docs/15.0.x/titles/resp/resp-endpoint.html | grep redis.io | perl -wp -e 's!.+<a href.+">(.+?)</a>.+!$1!' | sort) <(curl -s https://redis.io/commands | perl -wnl -e 'if (m!.+<h1 class.+>! .. m!</h1>!) { if (not /h1/) { s!^ +!!g; print } }' | sort) | grep '<' < CLIENT GETINFO < MEMORY-STATS < MEMORY-USAGE
ãããŸããâŠã
Redisã«CLIENT GETINFOãšããã³ãã³ãã¯ãªããããªã®ã§ãééã£ãŠããæ°ãããŸãâŠã
ãœãŒã¹ã³ãŒããèŠããšãããã¯CLIENT GETNAMEã®èª€ãã¿ããã§ãã
ããã¯Pull RequestãåºããŠãããŸããã
æ®ã2ã€ã¯ãã-ããããã®ã§å·®åãšããŠåºãŠããããã§ãã
Redisã®ã¿ã«ããæ¹ã¯ãããªæãã§ãã
$ diff <(curl -s https://infinispan.org/docs/15.0.x/titles/resp/resp-endpoint.html | grep redis.io | perl -wp -e 's!.+<a href.+">(.+?)</a>.+!$1!' | sort) <(curl -s https://redis.io/commands | perl -wnl -e 'if (m!.+<h1 class.+>! .. m!</h1>!) { if (not /h1/) { s!^ +!!g; print } }' | sort) | grep '>' > ACL CAT > ACL DELUSER > ACL DRYRUN > ACL GENPASS > ACL GETUSER > ACL LIST > ACL LOAD > ACL LOG > ACL SAVE > ACL SETUSER > ACL USERS > ACL WHOAMI > ASKING > BF.ADD > BF.CARD > BF.EXISTS > BF.INFO > BF.INSERT > BF.LOADCHUNK > BF.MADD > BF.MEXISTS > BF.RESERVE > BF.SCANDUMP > BGREWRITEAOF > BGSAVE > BITCOUNT > BITFIELD > BITFIELD_RO > BITOP > BITPOS > BLMOVE > BLMPOP > BRPOPLPUSH > BZMPOP > BZPOPMAX > BZPOPMIN > CF.ADD > CF.ADDNX > CF.COUNT > CF.DEL > CF.EXISTS > CF.INFO > CF.INSERT > CF.INSERTNX > CF.LOADCHUNK > CF.MEXISTS > CF.RESERVE > CF.SCANDUMP > CLIENT CACHING > CLIENT GETNAME > CLIENT GETREDIR > CLIENT KILL > CLIENT NO-EVICT > CLIENT NO-TOUCH > CLIENT PAUSE > CLIENT REPLY > CLIENT TRACKING > CLIENT TRACKINGINFO > CLIENT UNBLOCK > CLIENT UNPAUSE > CLUSTER ADDSLOTS > CLUSTER ADDSLOTSRANGE > CLUSTER BUMPEPOCH > CLUSTER COUNT-FAILURE-REPORTS > CLUSTER COUNTKEYSINSLOT > CLUSTER DELSLOTS > CLUSTER DELSLOTSRANGE > CLUSTER FAILOVER > CLUSTER FLUSHSLOTS > CLUSTER FORGET > CLUSTER GETKEYSINSLOT > CLUSTER INFO > CLUSTER KEYSLOT > CLUSTER LINKS > CLUSTER MEET > CLUSTER MYID > CLUSTER MYSHARDID > CLUSTER REPLICAS > CLUSTER REPLICATE > CLUSTER RESET > CLUSTER SAVECONFIG > CLUSTER SET-CONFIG-EPOCH > CLUSTER SETSLOT > CLUSTER SLAVES > CMS.INCRBY > CMS.INFO > CMS.INITBYDIM > CMS.INITBYPROB > CMS.MERGE > CMS.QUERY > COMMAND COUNT > COMMAND DOCS > COMMAND GETKEYS > COMMAND GETKEYSANDFLAGS > COMMAND INFO > COMMAND LIST > CONFIG GET > CONFIG RESETSTAT > CONFIG REWRITE > CONFIG SET > COPY > DUMP > EVAL > EVALSHA > EVALSHA_RO > EVAL_RO > FAILOVER > FCALL > FCALL_RO > FT.AGGREGATE > FT.ALIASADD > FT.ALIASDEL > FT.ALIASUPDATE > FT.ALTER > FT.CONFIG GET > FT.CONFIG SET > FT.CREATE > FT.CURSOR DEL > FT.CURSOR READ > FT.DICTADD > FT.DICTDEL > FT.DICTDUMP > FT.DROPINDEX > FT.EXPLAIN > FT.EXPLAINCLI > FT.INFO > FT.PROFILE > FT.SEARCH > FT.SPELLCHECK > FT.SUGADD > FT.SUGDEL > FT.SUGGET > FT.SUGLEN > FT.SYNDUMP > FT.SYNUPDATE > FT.TAGVALS > FT._LIST > FUNCTION DELETE > FUNCTION DUMP > FUNCTION FLUSH > FUNCTION KILL > FUNCTION LIST > FUNCTION LOAD > FUNCTION RESTORE > FUNCTION STATS > GEOADD > GEODIST > GEOHASH > GEOPOS > GEORADIUS > GEORADIUSBYMEMBER > GEORADIUSBYMEMBER_RO > GEORADIUS_RO > GEOSEARCH > GEOSEARCHSTORE > GETBIT > HGETALL > HSTRLEN > JSON.ARRAPPEND > JSON.ARRINDEX > JSON.ARRINSERT > JSON.ARRLEN > JSON.ARRPOP > JSON.ARRTRIM > JSON.CLEAR > JSON.DEBUG > JSON.DEBUG MEMORY > JSON.DEL > JSON.FORGET > JSON.GET > JSON.MERGE > JSON.MGET > JSON.MSET > JSON.NUMINCRBY > JSON.NUMMULTBY > JSON.OBJKEYS > JSON.OBJLEN > JSON.RESP > JSON.SET > JSON.STRAPPEND > JSON.STRLEN > JSON.TOGGLE > JSON.TYPE > LASTSAVE > LATENCY DOCTOR > LATENCY GRAPH > LATENCY HISTOGRAM > LATENCY HISTORY > LATENCY LATEST > LATENCY RESET > LOLWUT > MEMORY DOCTOR > MEMORY MALLOC-STATS > MEMORY PURGE > MEMORY STATS > MEMORY USAGE > MIGRATE > MODULE LOAD > MODULE LOADEX > MODULE UNLOAD > MONITOR > MOVE > OBJECT ENCODING > OBJECT FREQ > OBJECT IDLETIME > OBJECT REFCOUNT > PEXPIREAT > PFADD > PFCOUNT > PFDEBUG > PFMERGE > PFSELFTEST > PSYNC > PUBSUB CHANNELS > PUBSUB NUMPAT > PUBSUB NUMSUB > PUBSUB SHARDCHANNELS > PUBSUB SHARDNUMSUB > REPLCONF > REPLICAOF > RESTORE > RESTORE-ASKING > ROLE > SAVE > SCRIPT DEBUG > SCRIPT EXISTS > SCRIPT FLUSH > SCRIPT KILL > SCRIPT LOAD > SETBIT > SHUTDOWN > SLAVEOF > SLOWLOG GET > SLOWLOG LEN > SLOWLOG RESET > SMISMEMBER > SPUBLISH > SREM > SSUBSCRIBE > SUNSUBSCRIBE > SWAPDB > SYNC > TDIGEST.ADD > TDIGEST.BYRANK > TDIGEST.BYREVRANK > TDIGEST.CDF > TDIGEST.CREATE > TDIGEST.INFO > TDIGEST.MAX > TDIGEST.MERGE > TDIGEST.MIN > TDIGEST.QUANTILE > TDIGEST.RANK > TDIGEST.RESET > TDIGEST.REVRANK > TDIGEST.TRIMMED_MEAN > TFCALL > TFCALLASYNC > TFUNCTION DELETE > TFUNCTION LIST > TFUNCTION LOAD > TOPK.ADD > TOPK.COUNT > TOPK.INCRBY > TOPK.INFO > TOPK.LIST > TOPK.QUERY > TOPK.RESERVE > TOUCH > TS.ADD > TS.ALTER > TS.CREATE > TS.CREATERULE > TS.DECRBY > TS.DEL > TS.DELETERULE > TS.GET > TS.INCRBY > TS.INFO > TS.MADD > TS.MGET > TS.MRANGE > TS.MREVRANGE > TS.QUERYINDEX > TS.RANGE > TS.REVRANGE > UNLINK > WAIT > WAITAOF > XACK > XADD > XAUTOCLAIM > XCLAIM > XDEL > XGROUP CREATE > XGROUP CREATECONSUMER > XGROUP DELCONSUMER > XGROUP DESTROY > XGROUP SETID > XINFO CONSUMERS > XINFO GROUPS > XINFO STREAM > XLEN > XPENDING > XRANGE > XREAD > XREADGROUP > XREVRANGE > XSETID > XTRIM > ZMSCORE > ZRANK > ZREVRANK
ãŸã ãŸã ãããããããŸãããHGETALLãªã©ããã£ããããŸãã
ããã§ä»åŸã差忝èŒã¯ã§ãããã§ãã
ããããã¯ãInfinispan Serverã§å°ãRedisãããã³ã«ã詊ããŠã¿ãŸãããã
ç°å¢
ä»åã®ç°å¢ã¯ãã¡ãã
$ java --version openjdk 21.0.2 2024-01-16 LTS OpenJDK Runtime Environment Temurin-21.0.2+13 (build 21.0.2+13-LTS) OpenJDK 64-Bit Server VM Temurin-21.0.2+13 (build 21.0.2+13-LTS, mixed mode, sharing) $ bin/server.sh --version Infinispan Server 15.0.0.Final (I'm Still Standing) Copyright (C) Red Hat Inc. and/or its affiliates and other contributors License Apache License, v. 2.0. http://www.apache.org/licenses/LICENSE-2.0
Infinispan Serverã¯172.18.0.3ã§åäœããŠãããã®ãšããŠã以äžã®ã³ãã³ãã§èµ·åãããŸãã
$ bin/server.sh \ -b 0.0.0.0 \ -Djgroups.tcp.address=$(hostname -i)
Infinispan Serverã«ã¯ã以äžã®ã³ãã³ãã§ç®¡ççšãŠãŒã¶ãŒãšã¢ããªã±ãŒã·ã§ã³çšãŠãŒã¶ãŒãäœæããŠãããã®ãšããŸãã
$ bin/cli.sh user create -g admin -p password ispn-admin $ bin/cli.sh user create -g application -p password ispn-user
Redisãžã®ã¢ã¯ã»ã¹ã«ã¯Redis CLIã䜿ããŸãã
$ bin/redis-cli --version redis-cli 7.2.4
Redis CLIããInfinispan Serverã®RESPãšã³ããã€ã³ããžæ¥ç¶ãã
ã¢ããªã±ãŒã·ã§ã³çšãŠãŒã¶ãŒã®èªèšŒæ å ±ã䜿ã£ãŠãRESPãšã³ããã€ã³ãã«æ¥ç¶ããŸãã
$ bin/redis-cli -h 172.18.0.3 -p 11222 --user ispn-user --pass password Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
Infinispan Serverã¯ããã©ã«ãã§èªèšŒå¿ é ãªã®ã§ãå ã«ãŠãŒã¶ãŒãäœã£ãŠããå¿ èŠããããŸãã
ã§ãæ¥ç¶ããã§ããã°ãã£ãã䜿ããŸãã
172.18.0.3:11222> set key1 value1 OK 172.18.0.3:11222> get key1 "value1"
ãã®ãããã¯ã14.0ã®æã«ã確èªããŠããã®ã§åãã§ããã
Infinispan Serverã«ãã°ã€ã³ããŠããã£ãã·ã¥ã®å®çŸ©ã確èªããŠãããŸãããã
$ bin/cli.sh -c http://ispn-admin:password@localhost:11222
ãã£ãã·ã¥ã®äžèЧã
> ls caches memcachedCache ___script_cache respCache
respCache
ãšããã®ã¯ãInfinispan Serverãèµ·åæã«äœæããããã©ã«ãã®ãã£ãã·ã¥ã§ãã
確èªã
> describe caches/respCache { "respCache" : { "distributed-cache" : { "key-partitioner" : "org.infinispan.distribution.ch.impl.RESPHashFunctionPartitioner", "mode" : "SYNC", "statistics" : true, "encoding" : { "key" : { "media-type" : "application/octet-stream" }, "value" : { "media-type" : "application/octet-stream" } } } } }
Distributed Cacheã«ãªã£ãŠããŸãã確ãã14.0ã®æã¯Replicated Cacheã ã£ããšæããŸãã
å®çŸ©ãå€ãã£ãã®ã§ããããïŒ
ãã®ããã§ãã
if (cacheManager.getCacheManagerConfiguration().isClustered()) { // We are running in clustered mode builder.clustering().cacheMode(CacheMode.DIST_SYNC); // See: https://redis.io/docs/reference/cluster-spec/#key-distribution-model builder.clustering().hash().keyPartitioner(new RESPHashFunctionPartitioner()); }
ãã¡ãã®å€æŽã§ããã
respcache should default to distributed
ç¹ã«çç±ã¯æžãããŠããŸããããããã©ã«ããDistributed Cacheã«ããã¹ãã ãšå€æããããã§ãã
ã¡ãªã¿ã«ãRESPãšã³ããã€ã³ãã§ç»é²ããããŒã¿ãInfinipsan Serverã§ãèŠãããšãã§ããŸãã
> cache respCache > get key1 value1
ã¯ã©ã¹ã¿ãªã³ã°ããŠã¿ã
Infinispan 14.0ã®æã¯RESPãšã³ããã€ã³ãã«èšå®ãããã£ãã·ã¥ã®å€æŽãããŠã¿ããããã®ã§ãããä»åã¯ã¯ã©ã¹ã¿ãªã³ã°ããŠã¿ãããš
æããŸãã
ã¡ããã©ãããã©ã«ããDistributed Cacheã«ãªã£ãŠããŸãããã
Infinispan Serverã3ããŒãïŒ172.18.0.3ã5ïŒã«ããŸãã
$ bin/cli.sh -c http://ispn-admin:password@localhost:11222 > ls /cluster a65add5acb25-63023 06834bc0e989-48561 1ce7dbd93833-65191
Redis CLIããæ¥ç¶ããŠã¿ãŸãã
$ bin/redis-cli -h 172.18.0.3 -p 11222 --user ispn-user --pass password Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
CLUSTER NODES
ã³ãã³ããå®è¡ããŠã¿ãŸãã
172.18.0.3:11222> cluster nodes a65add5acb25-63023 0.0.0.0:11222@39380 master - 0 1710676040 9 connected 256-1087 5440-6015 7360-8511 9536-10367 10944-11775 11904-12543 13504-13887 14848-14911 06834bc0e989-48561 0.0.0.0:11222@39380 myself,master - 0 1710676040 9 connected 1344-2111 2368-2431 4096-4799 6080-7359 8512-9535 10368-10943 14208-14655 14976-15551 15680-15807 1ce7dbd93833-65191 0.0.0.0:11222@39380 master - 0 1710676040 9 connected 0-255 1088-1343 2112-2367 2432-4095 4800-5439 6016-6079 11776-11903 12544-13503 13888-14207 14656-14847 14912-14975 15552-15679 15808-16383
3ããŒãèªèããŠããŸããRedis ClusterãšããŠèªèãããŠããããšããããšã§ããããã§ãã
ããŒã¿ã10åã»ã©ç»é²ããŠã¿ãŸãã
172.18.0.3:11222> set key1 value1 OK 172.18.0.3:11222> set key2 value2 OK 172.18.0.3:11222> set key3 value3 OK 172.18.0.3:11222> set key4 value4 OK 172.18.0.3:11222> set key5 value5 OK 172.18.0.3:11222> set key6 value6 OK 172.18.0.3:11222> set key7 value7 OK 172.18.0.3:11222> set key8 value8 OK 172.18.0.3:11222> set key9 value9 OK 172.18.0.3:11222> set key10 value10 OK
ååŸã
172.18.0.3:11222> get key1 "value1" 172.18.0.3:11222> get key2 "value2" 172.18.0.3:11222> get key3 "value3" 172.18.0.3:11222> get key4 "value4" 172.18.0.3:11222> get key5 "value5" 172.18.0.3:11222> get key6 "value6" 172.18.0.3:11222> get key7 "value7" 172.18.0.3:11222> get key8 "value8" 172.18.0.3:11222> get key9 "value9" 172.18.0.3:11222> get key10 "value10"
Redis CLIã«-c
ãªãã·ã§ã³ãã€ããªããŠãããµã€ãã«åããŸããïŒ
ãããŸã§ãããšäºæ³ãã€ããŸããã-c
ãªãã·ã§ã³ãã€ããŠãç¹ã«ãªãã€ã¬ã¯ããããããŸããã
$ bin/redis-cli -h 172.18.0.3 -p 11222 --user ispn-user --pass password -c Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
äžå¿ãInfinispan Serverã®Management Consoleã§ç¢ºèªãããšãããŒã¿ã¯åããŒãã«åæ£ãããŠé 眮ãããŠããããã§ãã
Redis Clusterã§ã¯ãããã®ã®ãããŒã¿ãååŸãã察象ã®ããŒãã«åããŠãªãã€ã¬ã¯ããè¡ãããªãRedis Clusterãšãã£ãæãã§ããããã
ãŸãããªããšãªããããªãæ°ã¯ããŠããã®ã§ãäºæ³éãã§ã¯ããã®ã§ããã
ãšããã§ããããªããšãããããŠ1ããŒãã®æã¯ã·ã³ã°ã«ããŒãã®Redis ClusterãšããŠèªèãããŠããã®ã§ããããïŒ
$ bin/redis-cli -h 172.18.0.3 -p 11222 --user ispn-user --pass password Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. 172.18.0.3:11222> cluster nodes 9b7484f2d27a-3856 0.0.0.0:11222@54440 myself,master - 0 1710676876 1 connected 0-16383
ãã®ããã§ãã
å®è£ ãããå°ã
Infinispan 14.0ã§è©Šããæãå°ãå®è£ ãèŠãã®ã§ããã15.0ã§èŠããšã ãã¶å€ãã£ãŠãããã§ãã
å®è£ ãããŠããã³ãã³ãã¯ã以äžã®ããã±ãŒãžïŒãµãããã±ãŒãžå«ãïŒã«ãããŸãã
åã¯Resp3Handler
ãªã©ã«ã³ãã³ãåãæžãããŠããã®ã§ãããã ãã¶å€ãããŸãããã
ãŸãã以åã¯RESPãµãŒããŒã®å®è£
ã«Lettuceã䜿ããããããŠããŸããããä»ã¯ããã§ã¯ãªãããã§ãã
Nettyãã¡ã€ã³ã«äœ¿ã£ãŠããæãã§ããã
Redisã®ã³ãã³ãã®ãã³ãŒãåŠçã¯Nettyã®ãã³ãŒããŒã®ä»çµã¿ã§è¡ããããããªã®ã§ããã
ããã§äœ¿ãããŠããRespDecoder
ãšããã¯ã©ã¹ããªããïŒãšæã£ããããã®å®è£
ã¯å®çŸ©ããããŒãµãŒãèªåçæããŠããããã§ãã
https://github.com/infinispan/infinispan/blob/15.0.0.Final/server/resp/src/main/resources/resp.gr
https://github.com/infinispan/infinispan/blob/15.0.0.Final/server/resp/pom.xml#L79-L95
ããããä»çµã¿ã§ã§ããŠãããã§ããã
ãããã«
Infinispan 15.0ã§å®è£ ã³ãã³ãã倧ããå¢ãããRESPãšã³ããã€ã³ãã詊ããŠã¿ãŸããã
ããã£ãšäœ¿ãåã«ã¯ç¹ã«14.xã®æãšå€ããã¯ãªãã®ã§ãããå éšå®è£ ãã ãã¶å€ãã£ãŠããæããããŸãã
ãŸã14.xã®æã¯ã¯ã©ã¹ã¿ãªã³ã°ã詊ããŠããªãã£ãã®ã§ãå®éã«äœ¿ããšã©ãããæåã«ãªãã®ãã¡ãã£ãšæ°ã«ãªã£ãŠããã®ã§ç¢ºèªãã
ããæ©äŒã«ãªããŸããã
ããã«ããŠãããã®å¢ãã§Redisã®ã»ãšãã©ã®æ©èœãã«ããŒãããã§ããããïŒ
RedisãããããDragonflyããããšç«¶ãããšã«ãªã£ããïŒ