Spring-data-redis集成redis的方法

Spring-data-redis集成redis的方法

spring-data-redis是spring大家族的一部分,提供了在srping應用中通過簡單的配置訪問redis服務,對reids底層開發包(Jedis, JRedis, and RJC)進行了高度封裝

一、安裝redis服務?

1、下載安裝redis服務,安裝完成后會自動啟動redis服務

sudo?apt-get?install?redis-server

2、下載完成后,我們可以通過命令檢查redis服務進程

ps?-aux|grep?redis

結果如下圖所示:

Spring-data-redis集成redis的方法

3、也可以檢查Redis服務的狀態

netstat?-nlt|grep?6379  #結果如下: #?tcp?0?0?127.0.0.1:6379?0.0.0.0:*?LISTEN

4、通過命令檢查redis服務狀態

sudo?/etc/init.d/redis-server?status #?結果如下:redis-server?is?running

二、配置redis

#?編輯redis配置文件 sudo?vim?/etc/redis/redis.conf  #?在vim中設置redis訪問密碼 requirepass?123456  #?在vim中注釋bind,設置允許遠程訪問,redis默認只允許本機訪問 #bind?127.0.0.1  #?重啟redis服務 sudo?/etc/init.d/redis-server?restart  #?客戶端訪問redis服務 sudo?redis-cli  #?客戶端登錄并訪問redis服務 sudo?redis-cli?-a?youpassword  #?遠程客戶端登錄并訪問redis服務 sudo?redis-cli?-a?youpassword?-h?192.168.1.22

三、編寫Java代碼

1、cache接口定義

public?interface?Cache?{  ????/** ?????*?添加 ?????*?@param?key ?????*?@param?value ?????*/ ????void?put(Object?key,?Object?value); ???? ????/** ?????*?得到key的值 ?????*?@param?key ?????*?@return ?????*/ ????Object?get(Object?key);  ????/** ?????*?移除key ?????*?@param?key ?????*?@return ?????*/ ????Object?remove(Object?key);  }

2、cache接口實現

import?org.springframework.dao.DataAccessException; import?org.springframework.data.redis.connection.RedisConnection; import?org.springframework.data.redis.connection.RedisListCommands; import?org.springframework.data.redis.connection.RedisStringCommands; import?org.springframework.data.redis.connection.RedisZSetCommands; import?org.springframework.data.redis.connection.jedis.JedisConverters; import?org.springframework.data.redis.core.Cursor; import?org.springframework.data.redis.core.RedisCallback; import?org.springframework.data.redis.core.RedisTemplate; import?org.springframework.data.redis.core.ScanOptions; import?org.springframework.data.redis.core.types.Expiration; import?org.springframework.data.redis.serializer.RedisSerializer; import?redis.clients.jedis.Jedis;  public?class?DefaultRedisCache?implements?Cache?{  ????private?final?static?Logger?logger?=?LoggerFactory.getLogger(DefaultRedisCache.class);  ????private?RedisTemplate?redisTemplate;  ????//秒 ????private?final?static?Long?DEFAULT_EXPIRE?=?12?*?60?*?60L;  ????public?DefaultRedisCache(RedisTemplate?redisTemplate)?{ ????????this.redisTemplate?=?redisTemplate; ????}  ????@Override ????public?void?put(final?Object?key,?final?Object?value)?{ ????????put(key,?value,?DEFAULT_EXPIRE); ????}  ????@Override ????public?Object?get(final?Object?key)?{ ????????return?redisTemplate.execute(new?RedisCallback()?{ ????????????@Override ????????????public?Object?doInRedis(RedisConnection?connection)?throws?DataAccessException?{  ????????????????RedisSerializer<object>?serializer?=?getRedisSerializer();  ????????????????byte[]?keyByte?=?serializer.serialize(key); ????????????????if(keyByte?==?null){ ????????????????????return?null; ????????????????} ????????????????byte[]?bytes?=?connection.get(keyByte);  ????????????????if?(bytes?==?null)?{ ????????????????????return?null; ????????????????}  ????????????????return?serializer.deserialize(bytes); ????????????} ????????}); ????}  ????@Override ????public?Object?remove(final?Object?key)?{ ????????return?redisTemplate.execute(new?RedisCallback()?{ ????????????@Override ????????????public?Object?doInRedis(RedisConnection?connection)?throws?DataAccessException?{  ????????????????RedisSerializer<object>?serializer?=?getRedisSerializer();  ????????????????if?(key?==?null)?{ ????????????????????return?null; ????????????????}  ????????????????byte[]?bytes?=?serializer.serialize(key);  ????????????????return?connection.del(bytes); ????????????} ????????}); ????}</object></object>

3、配置applicationContext-cache-test.xml文件

<?xml  version="1.0" encoding="UTF-8"?><beans http:>  ????<property-placeholder></property-placeholder>  ????<!-- jedis pool配置 --> ????<bean> ????????<property></property> ????????<property></property> ????????<property></property> ????????<property></property> ????????<property></property> ????</bean>  ????<!-- spring data redis --> ????<bean> ????????<property></property> ????????<property></property> ????????<property></property> ????????<property></property> ????????<property></property> ????????<!--<property name="database" value="${commons.cache.redis.default.db}"></property>--> ????????<property></property> ????</bean>  ????<bean> ????????<property></property> ????</bean> ???? ????<!-- 自定義緩存工廠接口 --> ????<bean></bean></beans>

4、配置redis-config.properties文件

#?jedis?pool配置 commons.cache.redis.maxTotal=1000 commons.cache.redis.maxIdle=600 commons.cache.redis.maxWait=1000 commons.cache.redis.testOnBorrow=true commons.cache.redis.testOnReturn=true  #?spring?data?redis?配置 commons.cache.redis.host=192.168.1.230 commons.cache.redis.port=6379 commons.cache.redis.password=123456 commons.cache.redis.timeout=1000

5、測試

@ContextConfiguration(locations?=?{ ????????"classpath:applicationContext-cache-test.xml" }) @RunWith(SpringJUnit4ClassRunner.class) public?class?CacheTest?extends?BaseTest{  ????@Autowired ????private?Cache?cache;  ????@Test ????public?void?redisTest()?{  ????????//?添加key為username的值到redis緩存里 ????????cache.put("username","nathan");  ????????//?獲取值 ????????Object?username?=?cache.get("username"); ????????System.out.println("cache.get?=?"?+?username);  ????????//?刪除值 //????????cache.remove("username"); //????????Object?delResult?=?cache.get("username"); //????????System.out.println("cache.remove?=?"?+?delResult); ????}  }

更多redis知識請關注redis入門教程欄目。

以上就是Spring-data-

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享