Redis + Jedis + Spring (一)—— 配置&常規操做(GET SET DEL)接着須要快速的調研下基於spring框架下的Redis操做。java
相關連接:redis
Redis實戰spring
Redis實戰之Redis + Jedismongodb
Redis實戰之徵服 Redis + Jedis + Spring (一)app
Redis實戰之徵服 Redis + Jedis + Spring (二)框架
Redis實戰之徵服 Redis + Jedis + Spring (三)dom
前文有述,Spring提供了對於Redis的專門支持:spring-data-redis。此外,相似的還有:ide
我想大部分人對spring-data-Hadoop、spring-data-MongoDB、spring-data-redis以及spring-data-jpa表示關注。oop
spring把專門的數據操做獨立封裝在spring-data系列中,spring-data-redis天然是針對Redis的獨立封裝了。ui
當前版本1.0.1,主要是將jedis、jredis、rjc以及srp等Redis Client進行了封裝,同時支持事務。已經讓我垂涎欲滴了。固然,當前版本不支持Sharding。例如,前文曾經經過Jedis經過Client配置,實現一致性哈希,達到Sharding的目的。再一點,若是你早在spring1.x寫過SpringJdbc的話,如今會以爲似曾相識。
在通過一番思想鬥爭後,我最終放棄了Jedis原生實現,擁抱spring-data-redis了。爲何?由於,我須要一個有事務機制的框架,一個不須要顯式調用對象池操做的框架。這些spring-data-redis都解決了。至於Sharding,當前數據量要求還不大,期待Redis 3.0吧。
對象池配置:
工廠實現:
模板類:
是否是很像配置一個JdbcTemplate?其實就這麼簡單。
redis.properties配置以下:
當前只能用一個節點,期待Redis 3.0,Sharding吧!
Redis初來乍練,目前也就是用Memcached多些,只會這些基本的操做,在這裏獻醜了!
假定作一個UserDao:
User對象就這麼兩個屬性:
實現這三個方法須要獲得RedisTemplate的支持:
爲何用序列化泛型?我存的數據都是可序列化的內容。還有更多爲何?其實我也解答不了不少,邊練邊學,我弄通了必定告訴你!
作一個保存造做,使用Redis的SET命令:
這裏是經過模板類,實現方法回調。在spring框架下,能夠方便的控制事務,若是你研究過spring的dao源代碼,對此必定熟悉。
這跟當年的SpringJdbcTemplate有那麼一拼!
想要將對象從Redis中取出來,就麻煩一些,須要序列化key,最好判斷下這個key是否存在,避免無用功。若是鍵值存在,須要對數據反序列化。
當年寫SpringJdbc的時候,就是這樣一個字段一個字段拼裝的,甭提多累人。好吧,用Spring-Data-Redis,又讓我回歸了!
刪除,就簡單點,不過也須要這樣折騰一會:
作個TestCase,暫時夠我用了!
貌似少了update,也許之後操做Hash時,會用上。
看看控制檯得到了什麼:
好吧,能夠開始用它來存點什麼了!
相關連接:
Redis實戰之徵服 Redis + Jedis + Spring (一)