SpringDataRedis簡(jiǎn)單使用示例代碼
spring-data-redis
spring-data-redis是spring-data模塊的一部分,專門(mén)用來(lái)支持在spring管理項(xiàng)目對(duì)redis的操作,使用java操作redis最常用的是使用jedis,但并不是只有jedis可以使用,像jdbc-redis jredis也都屬于redis的java客戶端,他們之間是無(wú)法兼容的,如果你在一個(gè)項(xiàng)目中使用了jedis,然后后來(lái)決定棄用掉改用jdbc-redis就比較麻煩了,spring-data-redis提供了redis的java客戶端的抽象,在開(kāi)發(fā)中可以忽略掉切換具體的客戶端所帶來(lái)的影響,而且他本身就屬于spring的一部分,比起單純的使用jedis,更加穩(wěn)定.管理起來(lái)更加自動(dòng)化.(當(dāng)然jedis的缺點(diǎn)不止以上).
spring-data-redis的特性
- 自動(dòng)管理連接池,提供了一個(gè)高度封裝的RedisTemplate類
- 針對(duì)jedis客戶端的大量api進(jìn)行了歸類封裝,把同一類型的操作封裝成了operation接口.支持redis中的五種數(shù)據(jù)類型的操作.
- 針對(duì)數(shù)據(jù)的"序列化與反序列化"]提供了多種可以選擇的策略(RedisSerializer)
- JdkSerializationRedisserializer:當(dāng)需要存儲(chǔ)java對(duì)象時(shí)使用.
- stringRedisSerializer:當(dāng)需要存儲(chǔ)string類型的字符串時(shí)使用.
- JacksonJsonRedisSerializer:將對(duì)象序列化成json的格式存儲(chǔ)在redis中,需要jackson-json工具的支持(目前我還沒(méi)使用過(guò),不了解)
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>編寫(xiě)配置文件
spring:
redis:
host: ip地址
port: 6379
password: 密碼
lettuce:
pool:
max-active: 8
max-idle: 8
min-idle: 0
max-wait: 100ms編寫(xiě)測(cè)試類
@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自動(dòng)序列化
@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默認(rèn)提供的StringRedisTemplate
key和value的序列化默認(rèn)都是String。
所以當(dāng)存取對(duì)象時(shí)需要進(jìn)行手動(dòng)序列化
@Autowired
private StringRedisTemplate stringRedisTemplate;
//JSON工具
private static final ObjectMapper mapper = new ObjectMapper();
@Test
void stringRedisTemplateTest() throws JsonProcessingException {
Student student = new Student("楓葉", 18);
//手動(dòng)序列化
String s = mapper.writeValueAsString(student);
//寫(xiě)入到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);
//手動(dòng)序列化
String s = mapper.writeValueAsString(student);
//寫(xiě)入到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簡(jiǎn)單使用的文章就介紹到這了,更多相關(guān)SpringDataRedis使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Springboot+Netty+Websocket實(shí)現(xiàn)消息推送實(shí)例
這篇文章主要介紹了Springboot+Netty+Websocket實(shí)現(xiàn)消息推送實(shí)例,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
OPENCV+JAVA實(shí)現(xiàn)人臉識(shí)別
這篇文章主要為大家詳細(xì)介紹了OPENCV+JAVA實(shí)現(xiàn)人臉識(shí)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02
Java通過(guò)反射將 Excel 解析成對(duì)象集合實(shí)例
這篇文章主要介紹了Java通過(guò)反射將 Excel 解析成對(duì)象集合實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08
java開(kāi)發(fā)之基于Validator接口的SpringMVC數(shù)據(jù)校驗(yàn)方式
這篇文章主要介紹了java開(kāi)發(fā)之基于Validator接口的SpringMVC數(shù)據(jù)校驗(yàn)方式,文中附含詳細(xì)示例代碼,有需要的朋友可以借鑒參考下2021-09-09
java自帶的MessageDigest實(shí)現(xiàn)文本的md5加密算法
這篇文章主要介紹了java自帶的MessageDigest實(shí)現(xiàn)文本的md5加密算法,需要的朋友可以參考下2015-12-12
利用Spring boot如何創(chuàng)建簡(jiǎn)單的web交互應(yīng)用
這篇文章主要介紹了利用Spring boot如何創(chuàng)建簡(jiǎn)單的web交互應(yīng)用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-04-04
java讀取枚舉類的值轉(zhuǎn)成list和map方式
這篇文章主要介紹了java讀取枚舉類的值轉(zhuǎn)成list和map方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07

