将 RESP 协议端点与 Data Grid 一起使用
使用 Data Grid RESP 端点与远程缓存交互
摘要
Red Hat Data Grid 复制链接链接已复制到粘贴板!
Data Grid 是一个高性能分布式内存数据存储。
- 无架构数据结构
- 将不同对象存储为键值对的灵活性。
- 基于网格的数据存储
- 旨在在集群中分发和复制数据。
- 弹性扩展
- 动态调整节点数量,以便在不中断服务的情况下满足需求。
- 数据互操作性
- 从不同端点在网格中存储、检索和查询数据。
Data Grid 文档 复制链接链接已复制到粘贴板!
红帽客户门户网站中提供了 Data Grid 的文档。
Data Grid 下载 复制链接链接已复制到粘贴板!
访问红帽客户门户上的 Data Grid 软件下载。
您必须有一个红帽帐户才能访问和下载数据中心软件。
使开源包含更多 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
1. Data Grid RESP 端点 复制链接链接已复制到粘贴板!
默认情况下,RESP 端点在单端口端点上启用。Redis 客户端连接会自动检测到并路由到内部连接器。RESP 端点可以正常工作:
- 独立数据网格服务器部署(与独立的 Redis 一样,每个服务器实例相互独立运行)。
- 集群数据网格服务器部署,其中服务器实例在彼此之间复制或分发数据。集群部署为客户端提供故障转移功能。
先决条件
- 安装 Data Grid Server。
流程
验证
当您启动 Data Grid Server 检查时,以下日志消息:
[org.infinispan.SERVER] ISPN080018: Started connector Resp (internal)
[org.infinispan.SERVER] ISPN080018: Started connector Resp (internal)
现在,您可以使用 Redis 客户端连接到 RESP 端点。例如,通过 Redis CLI,您可以执行以下操作在缓存中添加一个条目:
redis-cli -p 11222 --user username --pass password
redis-cli -p 11222 --user username --pass password
127.0.0.1:11222> SET k v OK 127.0.0.1:11222> GET k "v" 127.0.0.1:11222> quit
127.0.0.1:11222> SET k v
OK
127.0.0.1:11222> GET k
"v"
127.0.0.1:11222> quit
1.1. 为 RESP 端点配置缓存 复制链接链接已复制到粘贴板!
RESP 端点会自动配置并启动 respCache 缓存。这个缓存有以下配置:
-
local-cache或distributed-cache,具体取决于 Data Grid Server 集群模式。 -
键和值的应用程序/octet-stream编码。 -
RESPHashFunctionPartitionerhash partitioner,它支持 Redis 客户端使用的 CRC16 哈希
明确缓存的配置
可为缓存提供自定义配置,只要它不违反 RESP 连接器的要求,在这种情况下,服务器会引发异常且不会启动。主要限制是:
-
哈希分区功能必须是
org.infinispan.distribution.ch.impl.RESPHashFunctionPartitioner。 -
密钥编码必须是
application/octet-stream。
明确缓存配置示例如下:
XML
<distributed-cache name="respCache" aliases="0" owners="2"
key-partitioner="org.infinispan.distribution.ch.impl.RESPHashFunctionPartitioner"
mode="SYNC" remote-timeout="17500" statistics="true">
<encoding media-type="application/octet-stream"/>
</distributed-cache>
<distributed-cache name="respCache" aliases="0" owners="2"
key-partitioner="org.infinispan.distribution.ch.impl.RESPHashFunctionPartitioner"
mode="SYNC" remote-timeout="17500" statistics="true">
<encoding media-type="application/octet-stream"/>
</distributed-cache>
JSON
YAML
如果要在 Data Grid Console 中查看缓存条目(值为media-type="application/x-protostream"),请使用 Protobuf 编码配置缓存值编码。
显式 RESP 端点配置
如果单端口端点使用的隐式配置不适合您的需要,可以使用显式配置。
XML
JSON
YAML
2. 将缓存映射到 Redis 逻辑数据库 复制链接链接已复制到粘贴板!
使用缓存 别名 配置属性将缓存映射到 Redis 逻辑数据库。默认 respCache 映射到逻辑数据库 0。
在集群模式中,数据网格也可以使用多个逻辑数据库,这与在使用 Redis 集群时只支持数据库 0 的 Redis 不同。
3. Redis 命令 复制链接链接已复制到粘贴板!
Data Grid RESP 端点实现以下 Redis 命令:
- 附加
- AUTH
- BLPOP
- BLMPOP
- BRPOP
- CLIENT GETNAME
- 客户端 ID
- 客户端信息
- 客户端列表
- CLIENT SETINFO
- CLIENT SETNAME
- 命令
- CONFIG
- CLUSTER KEYSLOT
- 注意
此命令包含所有必填字段,但一些字段设置为
0,因为它们不适用于 Data Grid。 - 集群分片
- 集群插槽
- DBSIZE
- DECR
- DECRBY
- DEL
- DISCARD
- ECHO
请参阅 MULTI 命令。
- EXISTS
- EXPIRE
- EXPIREAT
- EXPIRETIME
- 注意
这个命令的行为与
FLUSHDB类似,因为 Data Grid 尚不支持多个 Redis 数据库。 - FLUSHDB
- GET
- GETDEL
- GETEX
- GETRANGE
- 注意
此命令已弃用。改为使用带有适当标志的
SET命令。 - HDEL
- HELLO
- HEXISTS
- HGET
- HGETALL
- HINCRBY
- HINCRBYFLOAT
- HKEYS
- HLEN
- HMGET
- HMSET
- HRANDFIELD
- HSCAN
- HSET
- HSETNX
- HSTRLEN
- HVALS
- INCR
- INCRBY
- INCRBYFLOAT
- 注意
这个实现会尝试返回真实 Redis 服务器返回的所有属性。但是,在大多数情形中,这些值被设置为
0,因为它们无法检索,或者不适用于 Data Grid。 - KEYS
- LINDEX
- 注意
当前实施的时间复杂性为 O (N),其中 N 是列表的大小。
- LLEN
- LCS
- 注意
当前实施是原子的,当源和目标相同列表时进行轮转。对于不同的列表,并发操作或失败有放宽一致性,除非将重新响应缓存配置为使用事务。
- LMPOP
- LPOP
- LPOS
- LPUSH
- LPUSHX
- LRANGE
- LREM
- LSET
- LTRIM
- 注意
此命令将返回由键和值使用的内存。它不包括与条目关联的额外元数据所使用的内存。
- 注意
此命令将返回与真实 Redis 服务器相同的字段,但所有值都将设置为
0。 - MGET
- 注意
此命令始终返回空模块列表。
- MSET
- MSETNX
- 注意
当前实施的隔离级别。Redis 提供可序列化的事务,但数据网格提供了一个可读取的隔离。
- PERSIST
- PFADD
- PEXPIRE
- PEXPIREAT
- PEXPIRETIME
- PING
- 注意
此命令已弃用。使用带有适当标志的
SET命令。 - PSUBSCRIBE
- PUBSUB 频道
- PUBSUB NUMPAT
- PTTL
- PUBLISH
- PUNSUBSCRIBE
- QUIT
- RANDOMKEY
- RPOP
- RPOPLPUSH
- RPUSH
- RPUSHX
- READONLY
- READWRITE
- RENAME
- RENAMENX
- RESET
- SADD
- SCARD
- 注意
如果在超时中没有使用光标,则会获得光标。超时为 5 分钟。
- SDIFF
- SDIFFSTORE
- 注意
Data Grid 允许本地和集群模式中 SELECT 命令,与 Redis 集群不同,后者禁止使用此命令,并且仅支持数据库零。
- SET
- 注意
此命令已弃用。改为使用带有适当标志的
SET命令。 - 注意
此命令已弃用。改为使用带有适当标志的
SET命令。 - SETRANGE
- SINTER
- SINTERCARD
- SINTERSTORE
- SISMEMBER
- SORT
- SORT_RO
- SMEMBERS
- SMISMEMBER
- 注意
当前实施的隔离级别。客户端可以在没有元素的情况下查看源和目标设置。操作不是原子的,可以从源中删除元素,并且无法插入到目标集中。
- SPOP
- SRANDMEMBER
- SREM
- SSCAN
- STRLEN
- 注意
此命令已弃用。改为使用
GETRANGE命令。 - 订阅
- SUNION
- SUNIONSTORE
- 时间
- TOUCH
- TTL
- TYPE
- 取消订阅
- UNWATCH
- WATCH
- ZADD
- ZCARD
- ZCOUNT
- ZDIFF
- ZDIFFSTORE
- ZINCRBY
- ZINTER
- ZINTERCARD
- ZINTERSTORE
- ZLEXCOUNT
- ZMPOP
- ZMSCORE
- ZPOPMAX
- ZPOPMIN
- ZUNION
- ZUNIONSTORE
- ZRANDMEMBER
- ZRANGE
- ZRANGEBYLEX
- ZRANGEBYSCORE
- ZREVRANGE
- ZREVRANGEBYLEX
- ZREVRANGEBYSCORE
- ZRANGESTORE
- ZRANK
- ZREM
- ZREMRANGEBYLEX
- ZREMRANGEBYRANK
- ZREMRANGEBYSCORE
- ZREVRANK
- ZSCAN
- ZSCORE