SpringDataRedis簡單使用示例代碼
spring-data-redis
spring-data-redis是spring-data模塊的一部分,專門用來支持在spring管理項目對redis的操作,使用java操作redis最常用的是使用jedis,但并不是只有jedis可以使用,像jdbc-redis jredis也都屬于redis的java客戶端,他們之間是無法兼容的,如果你在一個項目中使用了jedis,然后后來決定棄用掉改用jdbc-redis就比較麻煩了,spring-data-redis提供了redis的java客戶端的抽象,在開發(fā)中可以忽略掉切換具體的客戶端所帶來的影響,而且他本身就屬于spring的一部分,比起單純的使用jedis,更加穩(wěn)定.管理起來更加自動化.(當(dāng)然jedis的缺點不止以上).
spring-data-redis的特性
- 自動管理連接池,提供了一個高度封裝的RedisTemplate類
- 針對jedis客戶端的大量api進行了歸類封裝,把同一類型的操作封裝成了operation接口.支持redis中的五種數(shù)據(jù)類型的操作.
- 針對數(shù)據(jù)的"序列化與反序列化"]提供了多種可以選擇的策略(RedisSerializer)
- JdkSerializationRedisserializer:當(dāng)需要存儲java對象時使用.
- stringRedisSerializer:當(dāng)需要存儲string類型的字符串時使用.
- JacksonJsonRedisSerializer:將對象序列化成json的格式存儲在redis中,需要jackson-json工具的支持(目前我還沒使用過,不了解)
SpringBoot的版本是2.x
引入依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency>
編寫配置文件
spring: redis: host: ip地址 port: 6379 password: 密碼 lettuce: pool: max-active: 8 max-idle: 8 min-idle: 0 max-wait: 100ms
編寫測試類
@SpringBootTest class RedisDemoApplicationTests { @Autowired private RedisTemplate redisTemplate; @Test void testString(){ redisTemplate.opsForValue().set("name","shengyi"); Object name = redisTemplate.opsForValue().get("name"); System.out.println("name = " + name); } }
SpringDataRedis自動序列化
@Configuration public class RedisConfig { @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); //設(shè)置工廠 redisTemplate.setConnectionFactory(redisConnectionFactory); //設(shè)置序列化工具 GenericJackson2JsonRedisSerializer redisSerializer = new GenericJackson2JsonRedisSerializer(); //采用string序列化 redisTemplate.setKeySerializer(RedisSerializer.string()); redisTemplate.setHashKeySerializer(RedisSerializer.string()); //采用json序列化 redisTemplate.setValueSerializer(redisSerializer); redisTemplate.setHashValueSerializer(redisSerializer); return redisTemplate; } }
Spring默認提供的StringRedisTemplate
key和value的序列化默認都是String。
所以當(dāng)存取對象時需要進行手動序列化
@Autowired private StringRedisTemplate stringRedisTemplate; //JSON工具 private static final ObjectMapper mapper = new ObjectMapper(); @Test void stringRedisTemplateTest() throws JsonProcessingException { Student student = new Student("楓葉", 18); //手動序列化 String s = mapper.writeValueAsString(student); //寫入到redis stringRedisTemplate.opsForValue().set("student:1", s); //讀取數(shù)據(jù) String s1 = stringRedisTemplate.opsForValue().get("student:1"); //反序列化 Student student1 = mapper.readValue(s1, Student.class); System.out.println("student1 = " + student1); } @Autowired private StringRedisTemplate stringRedisTemplate; //JSON工具 private static final ObjectMapper mapper = new ObjectMapper(); @Test void stringRedisTemplateTest() throws JsonProcessingException { Student student = new Student("楓葉", 18); //手動序列化 String s = mapper.writeValueAsString(student); //寫入到redis stringRedisTemplate.opsForValue().set("student:1", s); //讀取數(shù)據(jù) String s1 = stringRedisTemplate.opsForValue().get("student:1"); //反序列化 Student student1 = mapper.readValue(s1, Student.class); System.out.println("student1 = " + student1); }
到此這篇關(guān)于SpringDataRedis簡單使用的文章就介紹到這了,更多相關(guān)SpringDataRedis使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JDK?version和class?file?version(Class編譯版本號)對應(yīng)關(guān)系解讀
這篇文章主要介紹了JDK?version和class?file?version(Class編譯版本號)對應(yīng)關(guān)系,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07詳細分析Java并發(fā)集合ArrayBlockingQueue的用法
這篇文章主要介紹了詳細分析Java并發(fā)集合ArrayBlockingQueue的用法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04如何把Spring Cloud Data Flow部署在Kubernetes上
這篇文章主要介紹了把Spring Cloud Data Flow部署在Kubernetes上,再跑個任務(wù)試試,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08關(guān)于@ApiModel和@ApiModelProperty的使用
這篇文章主要介紹了關(guān)于@ApiModel和@ApiModelProperty的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11java實現(xiàn)字符串和日期類型相互轉(zhuǎn)換的方法
這篇文章主要介紹了java實現(xiàn)字符串和日期類型相互轉(zhuǎn)換的方法,涉及java針對日期與字符串的轉(zhuǎn)換與運算相關(guān)操作技巧,需要的朋友可以參考下2017-02-02JavaWeb servlet實現(xiàn)下載與上傳功能的方法詳解
這篇文章主要介紹了JavaWeb servlet實現(xiàn)下載與上傳功能的方法,結(jié)合實例形式詳細分析了JavaWeb servlet實現(xiàn)下載與上傳功能的原理、實現(xiàn)方法與操作注意事項,需要的朋友可以參考下2020-04-04