當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring-data-redis入门
生活随笔
收集整理的這篇文章主要介紹了
Spring-data-redis入门
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.簡介
Spring-data-redis是spring大家族的一部分,提供了在srping應(yīng)用中通過簡單的配置訪問redis服務(wù),對reids底層開發(fā)包(Jedis, JRedis, and RJC)進(jìn)行了高度封裝,RedisTemplate提供了redis各種操作、異常處理及序列化,支持發(fā)布訂閱,并對spring 3.1 cache進(jìn)行了實現(xiàn)。
spring-data-redis針對jedis提供了如下功能:
1.連接池自動管理,提供了一個高度封裝的“RedisTemplate”類
2.針對jedis客戶端中大量api進(jìn)行了歸類封裝,將同一類型操作封裝為operation接口
ValueOperations:簡單K-V操作 ? SetOperations:set類型數(shù)據(jù)操作 ? ZSetOperations:zset類型數(shù)據(jù)操作 ? HashOperations:針對map類型的數(shù)據(jù)操作 ? ListOperations:針對list類型的數(shù)據(jù)操作2.入門小Demo
1.準(zhǔn)備工作
(1)構(gòu)建Maven工程
(2)引入Spring相關(guān)依賴、引入JUnit依賴
(3)引入Jedis和SpringDataRedis依賴
<properties><spring.version>4.2.4.RELEASE</spring.version></properties> ?<dependencies><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.8.1</version></dependency><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-redis</artifactId><version>1.7.2.RELEASE</version></dependency> ?<!-- Spring --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jms</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version></dependency></dependencies>(4)在src/main/resources下創(chuàng)建properties文件夾,建立redis-config.properties
# Redis settings # server IP redis.host=127.0.0.1 # server port redis.port=6379 # server pass redis.pass= # use dbIndex redis.database=0 # 控制一個pool最多有多少個狀態(tài)為idle(空閑的)的jedis實例 redis.maxIdle=300 # 表示當(dāng)borrow(引入)一個jedis實例時,最大的等待時間,如果超過等待時間(毫秒),則直接拋出JedisConnectionException; redis.maxWait=3000 # 在borrow一個jedis實例時,是否提前進(jìn)行validate操作;如果為true,則得到的jedis實例均是可用的 redis.testOnBorrow=true(5)在src/main/resources下創(chuàng)建spring文件夾 ,創(chuàng)建applicationContext-redis.xml
<context:property-placeholder location="classpath*:properties/redis-config.properties" /><!-- redis 相關(guān)配置 --><bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"><property name="maxIdle" value="${redis.maxIdle}" /><property name="maxWaitMillis" value="${redis.maxWait}" /><property name="testOnBorrow" value="${redis.testOnBorrow}" /></bean><bean id="JedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"p:host-name="${redis.host}" p:port="${redis.port}" p:password="${redis.pass}" p:pool-config-ref="poolConfig"/> ?<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"><property name="connectionFactory" ref="JedisConnectionFactory" /></bean>2.值類型操作
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:spring/applicationContext-redis.xml") public class TestValue { ?@Autowiredprivate RedisTemplate redisTemplate; ?/*** 存值*/@Testpublic void setValue(){redisTemplate.boundValueOps("name").set("redis");} ?/*** 取值*/@Testpublic void getValue(){System.out.println(redisTemplate.boundValueOps("name").get());} ?/*** 刪除*/@Testpublic void delValue(){redisTemplate.delete("name");} }3.set
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:spring/applicationContext-redis.xml") public class TestSet { ?@Autowiredprivate RedisTemplate redisTemplate; ?/*** 存值*/@Testpublic void setValue(){redisTemplate.boundSetOps("books").add("西游記");redisTemplate.boundSetOps("books").add("三國演義");redisTemplate.boundSetOps("books").add("紅樓夢");redisTemplate.boundSetOps("books").add("水滸傳");} ?/*** 取值* set類型為無序的,存取順序不一致*/@Testpublic void getValue(){Set books = redisTemplate.boundSetOps("books").members();System.out.println(books); //[西游記, 水滸傳, 紅樓夢, 三國演義]} ?/*** 刪除集合中的某個值*/@Testpublic void deleValue(){redisTemplate.boundSetOps("books").remove("西游記");} ?/*** 刪除整個集合*/@Testpublic void deleAll(){redisTemplate.delete("books");} }4.List類型操作
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:spring/applicationContext-redis.xml") public class TestList {@Autowiredprivate RedisTemplate redisTemplate; ?/*** 右壓棧:后添加的對象排在后邊*/@Testpublic void setValue() {redisTemplate.boundListOps("nameList").rightPush("劉備");redisTemplate.boundListOps("nameList").rightPush("關(guān)羽");redisTemplate.boundListOps("nameList").rightPush("張飛");} ?/*** 顯示右壓棧集合*/@Testpublic void getValue() {//range(long start,long end)//start表示開始的索引,end表示要遍歷的長度List nameList = redisTemplate.boundListOps("nameList").range(0, 3);System.out.println(nameList); ? //[劉備, 關(guān)羽, 趙飛]} ?/*** 左壓棧:先添加的對象排在后邊*/@Testpublic void setValue1() {redisTemplate.boundListOps("nameList1").leftPush("宋江");redisTemplate.boundListOps("nameList1").leftPush("武松");redisTemplate.boundListOps("nameList1").leftPush("魯智深");} ?/*** 顯示左壓棧集合*/@Testpublic void getValue1() {List nameList = redisTemplate.boundListOps("nameList1").range(0, 3);System.out.println(nameList); ? //[魯智深, 武松, 宋江]} ?/*** 查詢某個結(jié)果*/@Testpublic void getSerarchByIndex() {Object o = redisTemplate.boundListOps("nameList").index(1);System.out.println(o); ?//關(guān)羽} ?/*** 移除集合中的某個元素*/@Testpublic void removeByIndex() {//remove(long i,Object value)//i表示要刪除的元素個數(shù),value表示要刪除的元素//此處表示刪除1個魯智深redisTemplate.boundListOps("nameList1").remove(1, "魯智深");} } ?5.Hash類型操作
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:spring/applicationContext-redis.xml") public class TestHash {@Autowiredprivate RedisTemplate redisTemplate; ?/*** 存入值*/@Testpublic void setValue(){redisTemplate.boundHashOps("city").put("山西","太原");redisTemplate.boundHashOps("city").put("河北","石家莊");redisTemplate.boundHashOps("city").put("浙江","杭州");redisTemplate.boundHashOps("city").put("山東","青島");redisTemplate.boundHashOps("city").put("內(nèi)蒙古","呼和浩特");} ?/*** 獲取所有的key*/@Testpublic void getKeys(){Set cityKey = redisTemplate.boundHashOps("city").keys();System.out.println(cityKey);} ?/*** 獲取所有的value*/@Testpublic void getValues(){List cityValue = redisTemplate.boundHashOps("city").values();System.out.println(cityValue);} ?/*** 獲取指定的value*/ ?@Testpublic void getValue(){Object o = redisTemplate.boundHashOps("city").get("山西");System.out.println(o);} ?/*** 根據(jù)key移除value*/ ?@Testpublic void delete(){redisTemplate.boundHashOps("city").delete("內(nèi)蒙古");} } ??
總結(jié)
以上是生活随笔為你收集整理的Spring-data-redis入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在IntelliJ IDEA中使用git
- 下一篇: 分布式文件服务器FastDFS