日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

阿帕奇骆驼遇见Redis

發(fā)布時間:2023/12/3 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阿帕奇骆驼遇见Redis 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

鍵值商店的蘭博基尼

Camel是最好的面包集成框架,在本文中,我將向您展示如何通過利用另一個出色的項目Redis使它更加強大。

Camel 2.11即將發(fā)布,具有許多新功能,錯誤修復和組件。 這些新組件中的幾個是我創(chuàng)作的, redis-component是我最喜歡的組件 。 Redis – ligth鍵/值存儲區(qū)是一款出色的意大利軟件,專為提高速度而設計(與Lamborghini相同– Lamborghini –這是一款兩人座的意大利汽車,專為 速度)。 Redis用C語言編寫,并且具有接近金屬的內(nèi)存,Redis的表現(xiàn)非常出色(Lamborgini的座右銘是“ Closer to the Road”)。 Redis通常被稱為數(shù)據(jù)結構服務器,因為鍵可以包含字符串,哈希,列表和排序集。 快速,輕便的數(shù)據(jù)結構服務器對于軟件工程師來說就像是一輛超級跑車,它只是飛行而已。 如果您想了解有關Redis和蘭博基尼獨特性能特征的更多信息,可以在Google周圍找到自己。

Redis入門很容易:下載,制作和啟動Redis服務器。 完成這些步驟之后,您就可以從Camel應用程序中使用它了。 該組件在內(nèi)部使用Spring Data ,該數(shù)據(jù)又使用Jedis驅(qū)動程序,但有可能切換到其他Redis驅(qū)動程序。 以下是一些適合使用camel-redis組件的用例:

冪等存儲庫

冪等一詞在數(shù)學中用于描述一個函數(shù),如果將其應用到其自身上,將產(chǎn)生相同的結果。 在“消息傳遞”中,無論是一次還是多次接收,此概念都將轉(zhuǎn)換為具有相同效果的消息。 在Camel中,此模式是使用IdempotentConsumer類實現(xiàn)的,該類使用一個Expression計算給定消息交換的唯一消息ID字符串。 然后可以在IdempotentRepository中查找此ID,以查看是否以前已看到過該ID; 如果消息已消耗; 如果不是,則處理該消息并將ID添加到存儲庫。 RedisIdempotentRepository使用集合結構來存儲和檢查現(xiàn)有ID。

<bean id="idempotentRepository" class="org.apache.camel.component.redis.processor.idempotent.RedisIdempotentRepository"> <constructor-arg value="test-repo"/> </bean><route> <from uri="direct:start"/> <idempotentConsumer messageIdRepositoryRef="idempotentRepository"> <simple>${in.body.id}</simple> <to uri="mock:result"/> </idempotentConsumer> </route>

快取

Redis的主要用途之一是作為LRU緩存 。 它可以將內(nèi)存中的數(shù)據(jù)存儲為Memcached,或者可以調(diào)整為持久刷新數(shù)據(jù)到日志文件,如果節(jié)點重新啟動則可以重播。達到maxmemory時可以使用多種策略來創(chuàng)建滿足特定需求的緩存:

  • volatile-lru刪除具有過期集的密鑰中的一個,以嘗試刪除最近未使用的密鑰。
  • volatile-ttl刪除具有過期集的密鑰,并嘗試刪除剩余生存時間短的密鑰。
  • volatile-random從具有到期集的密鑰中刪除一個隨機密鑰。
  • allkeys-lru類似于volatile-lru,但是將刪除每種密鑰,包括普通密鑰或具有過期集的密鑰。
  • allkeys-random和volatile-random一樣,但是將刪除所有類型的鍵,包括普通鍵和具有過期集的鍵。

一旦您的Redis服務器配置了正確的策略并正在運行,您需要執(zhí)行的操作是SET和GET:

<?xml version="1.0" encoding="UTF-8"?> <route> <from uri="direct:start"/> <setHeader headerName="CamelRedis.Command"> <constant>SET</constant> </setHeader> <setHeader headerName="CamelRedis.Key"> <constant>keyOne</constant> </setHeader> <setHeader headerName="CamelRedis.Value"> <constant>valueOne</constant> </setHeader> <to uri="redis://localhost:6379"/> </route>

與Redis的Interap發(fā)布/訂閱

駱駝具有在路線之間進行交互的各種組件:

direct :在同一駱駝上下文中提供直接,同步的調(diào)用。
seda :異步行為,再次在同一駱駝上下文中在BlockingQueue上交換消息。
vm :類似于seda的異步行為,但只要它們在同一個JVM中,它還支持跨CamelContext的通信。 復雜的應用程序通常包括在單獨的計算機上運行的多個獨立的Camel實例。 對于這種情況,Camel提供了jms,activemq以及AWS SNS與SQS的組合,用于實例之間的消息傳遞。 Redis為發(fā)布/訂閱消息范式提供了一個更簡單的解決方案。 訂閱者通過指定頻道名稱或使用模式匹配從多個頻道接收消息來訂閱一個或多個頻道。 然后,發(fā)布者將消息發(fā)布到頻道,然后Redis確保它到達所有匹配的訂閱者。

<?xml version="1.0" encoding="UTF-8"?> <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> <route startupOrder="1"> <from uri="redis://localhost:6379?command=SUBSCRIBE&channels=testChannel"/> <to uri="mock:result"/> </route><route startupOrder="2"> <from uri="direct:start"/> <setHeader headerName="CamelRedis.Command"> <constant>PUBLISH</constant> </setHeader> <setHeader headerName="CamelRedis.CHANNEL"> <constant>testChannel</constant> </setHeader> <setHeader headerName="CamelRedis.MESSAGE"> <constant>Test Message</constant> </setHeader> <to uri="redis://localhost:6379"/> </route> </camelContext>

其他用法

保證的交付 :駱駝使用JMS,File,JPA和一些其他組件來支持此EIP。 Redis可以通過其事務支持用作輕量級鍵值持久存儲。

通過EIP模式中的“ 聲明檢查” ,您可以用聲明檢查(唯一密鑰)替換消息內(nèi)容,該聲明檢查可在以后用于檢索消息內(nèi)容。 消息內(nèi)容可以臨時存儲在Redis中。

Redis在實現(xiàn)計數(shù)器,排行榜,標簽系統(tǒng)和更多功能方面也非常受歡迎。 現(xiàn)在,有了兩把瑞士軍刀,您所做的整合僅受您的想象力限制。

參考: Apache Camel在OFBIZian博客上會見了我們的JCG合作伙伴 Bilgin Ibryam的Redis 。

翻譯自: https://www.javacodegeeks.com/2013/03/apache-camel-meets-redis.html

總結

以上是生活随笔為你收集整理的阿帕奇骆驼遇见Redis的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。