首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Spring-data-redis: 分布式行列

2013-07-04 
Spring-data-redis: 分布式队列??? Redis中list数据结构,具有“双端队列”的特性,同时redis具有持久数据的能

Spring-data-redis: 分布式队列

??? Redis中list数据结构,具有“双端队列”的特性,同时redis具有持久数据的能力,因此redis实现分布式队列是非常安全可靠的。它类似于JMS中的“Queue”,只不过功能和可靠性(事务性)并没有JMS严格。Redis本身的高性能和"便捷的"分布式设计(replicas,sharding),可以为实现"分布式队列"提供了良好的基础.

??? Redis中的队列阻塞时,整个connection都无法继续进行其他操作,因此在基于连接池设计是需要注意。

??? 我们通过spring-data-redis,来实现“同步队列”,设计风格类似与JMS。不过本实例中,并没有提供关于队列消费之后的消息确认机制,如果你感兴趣可以自己尝试实现它。

??? 1) Redis中的"队列"为双端队列,基于list数据结构实现,并提供了"队列阻塞"功能.

??? 2) 如果你期望使用redis做"分布式队列"server,且数据存取较为密集时,务必配置(redis.conf)中关于list数据结构的限制:

二.程序实例:

1) QueueListener:当队列中有数据时,可以执行类似于JMS的回调操作。

public static void main(String[] args) throws Exception{ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring-redis-beans.xml");RedisQueue<String> redisQueue = (RedisQueue)context.getBean("jedisQueue");redisQueue.pushFromHead("test:app");Thread.sleep(15000);redisQueue.pushFromHead("test:app");Thread.sleep(15000);redisQueue.destroy();}

??? 在程序运行期间,你可以通过redis-cli(客户端窗口)执行“lpush”,你会发现程序的控制台仍然能够正常打印队列信息。

?

?

?

?

?

热点排行