每个 Redisson 对象都绑定到一个 Redis 键(即对象名称),且可以通过 getName 方法读取。
RMap map = redissonClient.getMap("myMapObj");//获取redis中key为myMapObj的数据
System.out.println(map.getName()); // 结果为:myMapObj
所有和 Redis 键相关的操作被抽象到了 RKeys 接口:
RKeys keys = redissonClient.getKeys();//获取key对象
Iterable<String> allKeys = keys.getKeys();//把所有的key转成列表
Iterable<String> foundedKeys = keys.getKeysByPattern("key*");//筛选key中以key开头的数据
long numOfDeletedKeys = keys.delete("obj1", "obj2", "obj3");//通过key列表删除key值
long deletedKeysAmount = keys.deleteByPattern("test?");//通过匹配删除数据
String randomKey = keys.randomKey();//随机获取key
long keysAmount = keys.count();//获取key总数
Object类型
Redisson 分布式的 RBucket 对象可用作任意类型对象的通用容器。
RBucket<AnyObject> bucket = redisson.getBucket("anyObject");
bucket.set(new AnyObject(1));
AnyObject obj = bucket.get();
bucket.trySet(new AnyObject(3));
bucket.compareAndSet(new AnyObject(4), new AnyObject(5));
bucket.getAndSet(new AnyObject(6));
地理位置容器
Redisson 分布式的 RGeo 对象 可用作地理位置项的容器。
RGeo<String> geo = redisson.getGeo("test");
geo.add(new GeoEntry(13.361389, 38.115556, "Palermo"), new GeoEntry(15.087269, 37.502669, "Catania"));
geo.addAsync(37.618423, 55.751244, "Moscow");
Double distance = geo.dist("Palermo", "Catania", GeoUnit.METERS);
geo.hashAsync("Palermo", "Catania");
Map<String, GeoPosition> positions = geo.pos("test2", "Palermo", "test3", "Catania", "test1");
List<String> cities = geo.radius(15, 37, 200, GeoUnit.KILOMETERS);
Map<String, GeoPosition> citiesWithPositions = geo.radiusWithPosition(15, 37, 200, GeoUnit.KILOMETERS);
BitSet
Redisson 分布式的 RBitSet 对象具有类似于 java.util.BitSet 的结构,且表示的位向量会根据需要增长。BitSet 的大小由 Redis 限制为 4 294 967 295
RBitSet set = redisson.getBitSet("simpleBitset");
set.set(0, true);
set.set(1812, false);
set.clear(0);
set.addAsync("e");
set.xor("anotherBitset");
AtomicLong
Redisson 分布式的 RAtomicLong 对象具有类似于java.util.concurrent.atomic.AtomicLong 对象的结构。
RAtomicLong atomicLong = redisson.getAtomicLong("myAtomicLong");
atomicLong.set(3);
atomicLong.incrementAndGet();
atomicLong.get();
AtomicDouble
Redisson 分布式的 AtomicDouble 对象.
RAtomicDouble atomicDouble = redisson.getAtomicDouble("myAtomicDouble");
atomicDouble.set(2.81);
atomicDouble.addAndGet(4.11);
atomicDouble.get();
Topic
Redisson 分布式的 Topic 对象实现了 发布/订阅 机制。
RTopic<SomeObject> topic = redisson.getTopic("anyTopic");
topic.addListener(new MessageListener<SomeObject>() {
@Override
public void onMessage(String channel, SomeObject message) {
//...
}
});
// in other thread or JVM
RTopic<SomeObject> topic = redisson.getTopic("anyTopic");
long clientsReceivedMessage = topic.publish(new SomeObject());
Topic 模式
Redisson Topic pattern 对象可通过指定模式订阅到多个 topics。
RPatternTopic<Message> topic1 = redisson.getPatternTopic("topic1.*");
int listenerId = topic1.addListener(new PatternMessageListener<Message>() {
@Override
public void onMessage(String pattern, String channel, Message msg) {
Assert.fail();
}
});
Topic 模式监听器在重连到 Redis 服务器或者 Redis 服务器故障恢复时自动重新订阅。
Bloom filter
Redisson 分布式的 Bloom filter 对象。
RBloomFilter<SomeObject> bloomFilter = redisson.getBloomFilter("sample");
bloomFilter.tryInit(55000000L, 0.03);
bloomFilter.add(new SomeObject("field1Value", "field2Value"));
bloomFilter.add(new SomeObject("field5Value", "field8Value"));
bloomFilter.contains(new SomeObject("field1Value", "field8Value"));
HyperLogLog
Redisson 分布式的 HyperLogLog 对象。
RHyperLogLog<Integer> log = redisson.getHyperLogLog("log");
log.add(1);
log.add(2);
log.add(3);
log.count();