SpringとJedisの集積
回転:http://www.cnblogs.com/yjmyzz/p/4113019.html
まずSpringという宇宙無敵のオープンソースフレームを着用せざるを得ません.http://projects.spring.io/spring-data/ ここから見れば、今流行っているレディ、ソロ、ハdoop、モンゴDB、couchBase…全部が財布に入っています.redis統合には、主にspring-data-redisが使われています.
使用手順:
一、pom依存項追加
観察してみます
jecdis、jredisなどはjavaのredis clientを常用してすでに支持して、後でRedissonに統合することができますかを知らないで、spring-data-redisは1つのとても役に立つ種類を提供しました:StringRedis Template
ほとんどのキャッシュアプリケーションシーンでは、文字列は最も一般的なキャッシュ項目であり、StringRedis Templateで簡単に対処できます.
二、スプリング配置
View Code
ここではSentinelモードを使ってredis接続を構成しています.上編から学んで、sentinelは高い利用可能なアーキテクチャです.個人的には生産環境でsentinelモードを使うことを勧めています.
注:26-28行、試験を経て、もしデフォルトポートを修正したら、ここでHostNameとportを詳細に指定しなければならない.さもなければ運行後、正確にキャッシュを読めなくなり、下記の構成を参照してください.
このうち、hostNameは現在のmasterのIPであり、レポートはRedis-serverの実行ポート(非sentinelポート)であり、またuse Poolをfalseとして設定します.sentinelはMasterノードを自動的に切り替えることがありますので、現在のmasterノードがどのマシンなのか分かりません.前に提示されたコマンドを使ってもいいです.またはjavaコードで出力して、下記のコードを参照してください. ここのvalue値はfalseに設定することを提案しています.trueに変更したら、実際にテストしてみたら、いくつかの環境で次のようなエラーが発生します.
redis.clients.jedis.exceptions.JedisData Exception:ERR unknown command'SET'
その他の注意事項:
設定ファイルのsentinels属性のSetのノードは、必ずしも同じmasterではなく、複数のmasterに帰属することができます.すなわち、ここに10のnode情報が配置されていたら、そのうちの1−3はmaster 1に属し、残りの4−10はmaster 2に属します.これも許可されます.
このように呼び出すと、StringRedis Template.get Connection Factory().get SentinelConnection().masters()でmasterのリストに戻り、必要に応じてコードに必要なMasterにキャッシュを書き込みます.
三、ユニットテスト
View Code
運転してください.行雲流水のような出力:
…
情報:Created JedisPool to マスター 10.6.144.***:7030http://yjmyzz.cnblogs.com/---------0 A B-------C B---------SHA-上海虹橋PVG-浦東PEK-北京-------
…
赤い表示部分に注意して、eclipse操作台の出力から、現在のmasterはどのサーバーですか?
ここでもう一つの技術を追加します.マスターとslaaveを遍歴したいなら、下記のコードを参照してください.
View Code
以下のような結果を出力します.
マスター=>172.20.16.191:6379 slaaves of 172.20.16.191:6379=>172.20.16.192:6379
注:ここで出力されたslaavesのリストは、実際にテストしたところ、redis server端の配置に従ってslaave nodeのリストに戻ります.これらのnodeは死んでも生きています.言い換えれば、あるslaaveがダウンしても、ここに戻ってきます.
三、POJO対象のキャッシュ
Springから提供されたStringRedis TemplateはStringだけで操作できます.ほとんどの場合は十分ですが、redisにPOJOオブジェクトを保存する必要があるなら、StringRedis Templateのソースを参考にしてObject RedisTemplateを拡張します.
View Code
このように使ってもいいです.
View Code
この中のSampleBeanの定義は以下の通りである.
View Code
注:標準的なStringタイプではないので、redisコンソールで、使います./redis-cli get mBenはキャッシュ内容が見えないので、nilの出力しか得られません.setが成功していないと誤解しないでください.コードによりキャッシュ値を正常にゲットすることができます.
また、POJO対象のキャッシュについては、もう2つの注意事項があります.
a) POJO類にはデフォルトの無参画構造関数が必要です.そうでないと、アンチプログレッシブ時にエラーが発生します.
b) ObjectRedis TemplateのTはインターフェースではありません.例えばDominModelAはインターフェースからIModelAを引き継ぎます.Object Redis Templateを使う時、ObjectRedisTemplate<Dommann ModelA>と書きます.
菩提樹の下の楊過
出典:http://yjmyzz.cnblogs.com
この著作権は作者とブログ園に共有されています.転載を歓迎します.しかし、作者の同意なしにこの声明を保留しなければなりません.文章のページの明確な位置で原文の接続を提供します.そうでなければ、法律責任を追及する権利を保留します.
まずSpringという宇宙無敵のオープンソースフレームを着用せざるを得ません.http://projects.spring.io/spring-data/ ここから見れば、今流行っているレディ、ソロ、ハdoop、モンゴDB、couchBase…全部が財布に入っています.redis統合には、主にspring-data-redisが使われています.
使用手順:
一、pom依存項追加
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.4.1.RELEASE</version>
</dependency>
他のSpringに必要なコンポーネントは、Core、Bensなどです.ご自分で追加してください.観察してみます
jecdis、jredisなどはjavaのredis clientを常用してすでに支持して、後でRedissonに統合することができますかを知らないで、spring-data-redisは1つのとても役に立つ種類を提供しました:StringRedis Template
ほとんどのキャッシュアプリケーションシーンでは、文字列は最も一般的なキャッシュ項目であり、StringRedis Templateで簡単に対処できます.
二、スプリング配置
View Code
ここではSentinelモードを使ってredis接続を構成しています.上編から学んで、sentinelは高い利用可能なアーキテクチャです.個人的には生産環境でsentinelモードを使うことを勧めています.
注:26-28行、試験を経て、もしデフォルトポートを修正したら、ここでHostNameとportを詳細に指定しなければならない.さもなければ運行後、正確にキャッシュを読めなくなり、下記の構成を参照してください.
<bean id="jedisConnFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<property name="hostName" value="10.6.53.xxx"/>
<property name="port" value="8830"/>
<property name="usePool" value="false"/>
<constructor-arg ref="redisSentinelConfiguration"/>
</bean>
このうち、hostNameは現在のmasterのIPであり、レポートはRedis-serverの実行ポート(非sentinelポート)であり、またuse Poolをfalseとして設定します.sentinelはMasterノードを自動的に切り替えることがありますので、現在のmasterノードがどのマシンなのか分かりません.前に提示されたコマンドを使ってもいいです.またはjavaコードで出力して、下記のコードを参照してください.
1 ApplicationContext ctx = new FileSystemXmlApplicationContext("/opt/app/spring-redis.xml");
2 StringRedisTemplate template = ctx.getBean(StringRedisTemplate.class);
3 for (RedisServer m : template.getConnectionFactory().getSentinelConnection().masters()) {
4 logger.debug(m);
5 }
またredis.clients.jedis.exceptions.JedisData Exception:ERR unknown command'SET'
その他の注意事項:
設定ファイルのsentinels属性のSetのノードは、必ずしも同じmasterではなく、複数のmasterに帰属することができます.すなわち、ここに10のnode情報が配置されていたら、そのうちの1−3はmaster 1に属し、残りの4−10はmaster 2に属します.これも許可されます.
このように呼び出すと、StringRedis Template.get Connection Factory().get SentinelConnection().masters()でmasterのリストに戻り、必要に応じてコードに必要なMasterにキャッシュを書き込みます.
三、ユニットテスト
View Code
運転してください.行雲流水のような出力:
…
情報:Created JedisPool to マスター 10.6.144.***:7030http://yjmyzz.cnblogs.com/---------0 A B-------C B---------SHA-上海虹橋PVG-浦東PEK-北京-------
…
赤い表示部分に注意して、eclipse操作台の出力から、現在のmasterはどのサーバーですか?
ここでもう一つの技術を追加します.マスターとslaaveを遍歴したいなら、下記のコードを参照してください.
View Code
以下のような結果を出力します.
マスター=>172.20.16.191:6379 slaaves of 172.20.16.191:6379=>172.20.16.192:6379
注:ここで出力されたslaavesのリストは、実際にテストしたところ、redis server端の配置に従ってslaave nodeのリストに戻ります.これらのnodeは死んでも生きています.言い換えれば、あるslaaveがダウンしても、ここに戻ってきます.
三、POJO対象のキャッシュ
Springから提供されたStringRedis TemplateはStringだけで操作できます.ほとんどの場合は十分ですが、redisにPOJOオブジェクトを保存する必要があるなら、StringRedis Templateのソースを参考にしてObject RedisTemplateを拡張します.
View Code
このように使ってもいいです.
View Code
この中のSampleBeanの定義は以下の通りである.
View Code
注:標準的なStringタイプではないので、redisコンソールで、使います./redis-cli get mBenはキャッシュ内容が見えないので、nilの出力しか得られません.setが成功していないと誤解しないでください.コードによりキャッシュ値を正常にゲットすることができます.
また、POJO対象のキャッシュについては、もう2つの注意事項があります.
a) POJO類にはデフォルトの無参画構造関数が必要です.そうでないと、アンチプログレッシブ時にエラーが発生します.
b) ObjectRedis Template
菩提樹の下の楊過
出典:http://yjmyzz.cnblogs.com
この著作権は作者とブログ園に共有されています.転載を歓迎します.しかし、作者の同意なしにこの声明を保留しなければなりません.文章のページの明確な位置で原文の接続を提供します.そうでなければ、法律責任を追及する権利を保留します.