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
結果如下圖所示:
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入門教程欄目。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦