Redisson使得作为协调单机多线程并发程序的工具包,获得了协调分布式多机多线程并发系统的能力, 降低了设计和研发大规模分布式系统的难度(保障了原子性)。
主要下面11个应用场景:
1.分布式锁
完美解决了3个问题:
(1)加锁原子性问题(设置过期时间,中途宕机产生死锁)
(2)释放锁原子性问题(A线程误删B线程的锁)。
(3)锁过期时间控制问题(A线程没执行完,锁就过期了,B线程就会获取锁。这样就失去了锁的作用,相当于没加锁,A和B线程同时运行)。
注意这3个问题属于高并发问题,并未完全解决高可用问题,如调用失败,主从同步,redis重启等;
2.分布式延迟队列 RDelayedQueue; 用于一个消息队列多机多线程消费;
3.批量加锁 MultiLock;用于多角色操作同一个对象;
4.分布式地理空间 RGeo;用于查询附近范围的物体(经纬度);
5.布隆过滤器 BloomFilter;用于不存在的对象预判;
6.限流器 RateLimiter;用于控制一段时间内对共享数据的访问次数;
7.全局计数器;用于全局数据统计;
8.多值映射 MultiMap: 解决字典问题;
9.分布式远程服务 RemoteService: 用于通过Redis实现了Java的远程过程调用(RPC)
10.分布式实时对象(Live Object):用于分布式共享操作一个对象
11.分布式执行服务(Executor Service):用于并行计算,提交任务后,多机并发执行
注:
1.在集群模式下,Redisson为单个Redis集合类型提供了自动分片的功能,该功能仅限于Redisson PRO版本。
2.编码类名称 说明
org.redisson.codec.JsonJacksonCodec Jackson JSON 编码 默认编码
org.redisson.codec.AvroJacksonCodec Avro 一个二进制的JSON编码
org.redisson.codec.SmileJacksonCodec Smile 另一个二进制的JSON编码
org.redisson.codec.CborJacksonCodec CBOR又一个二进制的JSON编码
org.redisson.codec.MsgPackJacksonCodec MsgPack 再来一个二进制的JSON编码
org.redisson.codec.IonJacksonCodec Amazon Ion 亚马逊的Ion编码,格式与JSON类似
org.redisson.codec.KryoCodec Kryo 二进制对象序列化编码
org.redisson.codec.SerializationCodec JDK序列化编码
org.redisson.codec.FstCodec FST 10倍于JDK序列化性能而且100%兼容的编码
org.redisson.codec.LZ4Codec LZ4 压缩型序列化对象编码
org.redisson.codec.SnappyCodec Snappy 另一个压缩型序列化对象编码
org.redisson.client.codec.JsonJacksonMapCodec 基于Jackson的映射类使用的编码。可用于避免序列化类的信息,以及用于解决使用byte[]遇到的问题。
org.redisson.client.codec.StringCodec 纯字符串编码(无转换)
org.redisson.client.codec.LongCodec 纯整长型数字编码(无转换)
org.redisson.client.codec.ByteArrayCodec 字节数组编码
org.redisson.codec.CompositeCodec 用来组合多种不同编码在一起
3.Redis Brpoplpush 命令从列表中取出最后一个元素,并插入到另外一个列表的头部; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。