对象

Objects

Redisson 对象的单个实例被序列化并存储在任何支持 Redisson 的可用 Redis 节点中。这些对象可以分布在群集中的多个节点上,并且可以由单个应用程序或多个应用程序/服务器访问。这些分布式对象遵循 java.util.concurrent.atomic 软件包中的规范。它们支持对 Redis 中存储的对象进行无锁,线程安全和原子操作。由于在另一个应用程序读取对象时不会更新值,因此可以确保应用程序/服务器之间的数据一致性。Redisson 对象绑定到 Redis keys,我们可以通过 RKeys 接口管理这些密钥,并使用这些键访问我们的 Redisson 对象。

RKeys keys = client.getKeys();

Iterable<String> allKeys = keys.getKeys();

Iterable<String> keysByPattern = keys.getKeysByPattern('key*');

RKeys 接口还允许删除键,按模式删除键以及其他可用于管理键和对象的基于键的有用操作。Redisson 提供的分布式对象包括:

  • ObjectHolder
  • BinaryStreamHolder
  • GeospatialHolder
  • BitSet
  • AtomicLong
  • AtomicDouble
  • Topic
  • BloomFilter
  • HyperLogLog

Object Holder

由 RBucket 类表示,此对象可以保存任何类型的对象。该对象的最大大小为 512MB:

RBucket<Ledger> bucket = client.getBucket("ledger");
bucket.set(new Ledger());
Ledger ledger = bucket.get();

RBucket 对象可以对其持有的对象执行原子操作,例如 compareAndSet 和 getAndSet。

AtomicLong

该对象由 RAtomicLong 类表示,非常类似于 java.util.concurrent.atomic.AtomicLong 类,并表示可以通过原子方式更新的长值:

RAtomicLong atomicLong = client.getAtomicLong("myAtomicLong");
atomicLong.set(5);
atomicLong.incrementAndGet();

Topic

Topic 对象支持 Redis 的“发布和订阅”机制。收听已发布的消息:

RTopic<CustomMessage> subscribeTopic = client.getTopic("wx");

subscribeTopic.addListener(
  (channel, customMessage)
  -> future.complete(customMessage.getMessage()));

这里注册了 Topic 以收听来自 wx 频道的消息。然后,我们向该 Topic 添加一个侦听器,以处理来自该通道的传入消息。我们可以将多个侦听器添加到一个频道。让我们将消息发布到 wx 通道:

RTopic<CustomMessage> publishTopic = client.getTopic("baeldung");
long clientsReceivedMessage
  = publishTopic.publish(new CustomMessage("This is a message"));

这可以从另一个应用程序或服务器发布。CustomMessage 对象将由侦听器接收,并按 onMessage 方法中的定义进行处理。

下一页