摘要:概述是大家庭中的一員,和生態結合的很好,它提供了低級別和高級別的抽象,使我們很方便的就可以和交互后的版本需要支持同時支持和這個沒怎么用過以后默認實現是使用的話需要手動改下引入的包使用引入包配置文件數據庫索引默認為服務器地
概述
Spring Data Redis 是 Spring Data大家庭中的一員,和Spring 生態結合的很好,它提供了低級別(RedisTemplate ...)和高級別(ListOperations )的抽象,使我們很方便的就可以和Redis交互
2.X后的版本需要Java 8 支持
同時支持 Jedis和Lettuce(這個沒怎么用過),2.X以后默認實現是Lettuce,使用Jedis的話需要手動改下(引入Jedis的包)
使用: 引入包:配置文件org.springframework.boot spring-boot-starter-parent 2.0.5.RELEASE ` org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-test test org.springframework.data spring-data-redis redis.clients jedis 2.9.0
# REDIS (RedisProperties) # Redis數據庫索引(默認為0) spring.redis.database=5 # Redis服務器地址 spring.redis.host=127.0.0.1 # Redis服務器連接端口 spring.redis.port=6379 # Redis服務器連接密碼(默認為空) spring.redis.password=***** # 連接池最大連接數(使用負值表示沒有限制) spring.redis.pool.max-active=8 # 連接池最大阻塞等待時間(使用負值表示沒有限制) spring.redis.pool.max-wait=-1 # 連接池中的最大空閑連接 spring.redis.pool.max-idle=8 # 連接池中的最小空閑連接 spring.redis.pool.min-idle=0 # 連接超時時間(毫秒) spring.redis.timeout=0Config
@Configuration public class RedisConfig extends CachingConfigurerSupport { @Bean public RedisTemplate redisTemplate(RedisConnectionFactory factory) { RedisTemplate redisTemplate=new RedisTemplate(); redisTemplate.setConnectionFactory(factory); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new StringRedisSerializer()); System.out.println("suscessful"); return redisTemplate; } }測試類:
@Autowired private RedisTemplate redisTemplate; @Resource(name="redisTemplate") private HashOperations hashOperations; @Resource(name="redisTemplate") private ZSetOperations zSetOperations; @Test public void test1(){ redisTemplate.opsForValue().set("my","my"); Assert.assertEquals("my",redisTemplate.opsForValue().get("my")); } @Test public void test2() { Map序列化:map = new HashMap<>(); map.put("age", "13"); map.put("name", "selrain"); hashOperations.putAll("test2", map); Assert.assertEquals("13",hashOperations.get("test2","age")); hashOperations.delete("test2","age","name"); } @Test public void test3(){ zSetOperations.add("selrain","selraion",1); Assert.assertEquals("selraion",zSetOperations.range("selrain",0,1).iterator().next()); zSetOperations.remove("selrain","selraion"); } @Test public void test4(){ redisTemplate.execute((RedisConnection connection)->{ Jedis jedis=(Jedis)connection.getNativeConnection(); String s=jedis.set("test4","selrain","NX","EX",6000); return s; }); }
數據會轉換成字節在Redis存儲,在Spring Data中,序列化的核心包是org.springframework.data.redis.serializer,想要自定義自己的序列化,實現RedisSerializer即可,默認有2種實現
JdkSerializationRedisSerializer:RedisTemplate默認使用這個
StringRedisSerializer:針對String類型的序列化實現,大部分的情況下使用這個就好了
Api: RedisTemplate:opsForValue、opsForHash、opsForZSet方法分別獲取對String、hash、Zset數據結構的操作實現,一般感覺用這個就好了
HashOperations、ZSetOperations等還可以直接注入這些抽象,這樣就不用opsForHash,可以直接用,為什么不同的類型可以直接注入?看下這篇文章:
http://www.cnblogs.com/chaned...
execute方法給我們暴露了RedisConnection,拿到鏈接后,我們可以轉換成Jedis的原始鏈接,從而可以使用data redis不支持但是jedis支持的命令:比如測試代碼test4
其他:想不想了解Redis的配置是如何初始化的?看這篇文章:
https://my.oschina.net/u/3866...
小尾巴走一波,歡迎關注我的公眾號,不定期分享編程、投資、生活方面的感悟:)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/77314.html
摘要:本文有部分代碼是抄襲的。第二個坑需要指定對象的數據類型,不然反序列化報錯。第三的編輯器非常不好用。上面的配置有個缺陷,就是只能指定數據類型去緩存到。其實還可以配置一個但我持久層是。查詢分頁結果時,會無法反序列化。搜了半天沒解決方案。 本文有部分代碼是抄襲的。 1 :引入依賴 org.springframework.data spring-data-redis ${spr...
閱讀 2089·2021-09-29 09:35
閱讀 693·2021-09-08 09:36
閱讀 3402·2021-09-03 10:30
閱讀 2119·2019-08-30 14:21
閱讀 2915·2019-08-30 11:18
閱讀 3320·2019-08-29 17:31
閱讀 3148·2019-08-29 17:29
閱讀 1316·2019-08-29 17:13