ããã¯ããªã«ãããããŠæžãããã®ïŒ
Infinispan 15.0.0.FinalããªãªãŒã¹ãããŸããã
Infinispan 15.0.0.Final
ä»åã¯å€æŽå
容ãå±±çãã«ãªã£ãŠããŠã¡ãã£ãšé©ãã®ã§ãããRESPãšã³ããã€ã³ãïŒRedisãããã³ã«ïŒã§ãµããŒããããŠããã³ãã³ãã
倧éã«å¢ããŠããã®ã§ããã¡ãã確èªããŠã¿ãããšæããŸãã
ããšãã¯ã©ã¹ã¿ãªã³ã°ããã£ãŠã¿ãããšæããŸãã
Infinispanã®RESPãšã³ããã€ã³ã
Infinispanã®RESPãšã³ããã€ã³ãã¯ãInfinispan 14.0ã§è¿œå ãããRedisäºæã®ãšã³ããã€ã³ãã§ãã
Infinispan 14.0.0.Final
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ã®é ãããããšãããã¯ããã³ã£ãããããããå¢ããŠããŸãã
ããã¥ã¡ã³ããããµããŒãããŠããã³ãã³ããæãåºããŠã¿ãŸãã
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ã®ã³ãã³ãã£ãŠããã€ããã®ã§ãããïŒ
Commands | 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ã®èª€ãã¿ããã§ãã
https://github.com/infinispan/infinispan/blob/15.0.0.Final/server/resp/src/main/java/org/infinispan/server/resp/commands/connection/CLIENT.java
ããã¯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()) {
builder.clustering().cacheMode(CacheMode.DIST_SYNC);
builder.clustering().hash().keyPartitioner(new RESPHashFunctionPartitioner());
}
https://github.com/infinispan/infinispan/blob/15.0.0.Final/server/resp/src/main/java/org/infinispan/server/resp/RespServer.java#L86-L90
ãã¡ãã®å€æŽã§ããã
ISPN-15637 Make the respCache distributed by default by tristantarrant · Pull Request #11906 · infinispan/infinispan · GitHub
Loading...
ç¹ã«çç±ã¯æžãããŠããŸããããããã©ã«ãã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ã§èŠããšã ãã¶å€ãã£ãŠãããã§ãã
å®è£
ãããŠããã³ãã³ãã¯ã以äžã®ããã±ãŒãžïŒãµãããã±ãŒãžå«ãïŒã«ãããŸãã
https://github.com/infinispan/infinispan/tree/15.0.0.Final/server/resp/src/main/java/org/infinispan/server/resp/commands
åã¯Resp3Handler
ãªã©ã«ã³ãã³ãåãæžãããŠããã®ã§ãããã ãã¶å€ãããŸãããã
ãŸãã以åã¯RESPãµãŒããŒã®å®è£
ã«Lettuceã䜿ããããããŠããŸããããä»ã¯ããã§ã¯ãªãããã§ãã
Nettyãã¡ã€ã³ã«äœ¿ã£ãŠããæãã§ããã
Redisã®ã³ãã³ãã®ãã³ãŒãåŠçã¯Nettyã®ãã³ãŒããŒã®ä»çµã¿ã§è¡ããããããªã®ã§ããã
https://github.com/infinispan/infinispan/blob/15.0.0.Final/server/resp/src/main/java/org/infinispan/server/resp/BaseRespDecoder.java
https://github.com/infinispan/infinispan/blob/15.0.0.Final/server/resp/src/main/java/org/infinispan/server/resp/RespChannelInitializer.java#L39-L41
ããã§äœ¿ãããŠãã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ããããšç«¶ãããšã«ãªã£ããïŒ
Dragonfly - The Fastest In-Memory Data Store