spring boot 与redis 整合
生活随笔
收集整理的這篇文章主要介紹了
spring boot 与redis 整合
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
創(chuàng)建項(xiàng)目時(shí)需要導(dǎo)入的包
在application.yml 配置文件中配置需要的
spring:datasource:url: jdbc:mysql://localhost:3306/數(shù)據(jù)庫(kù)名?useSSL=false&serverTimezone=Asia/Shanghaiusername: 用戶名password: 密碼jpa:show-sql: truehibernate:ddl-auto: none #redis 可以不配,默認(rèn)就是locatihostredis:host: localhostport: 6379cache:type: redis創(chuàng)建一個(gè)實(shí)體類
package com.lanou3g.redisdemo.entity;import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor;/*** 創(chuàng)建人: 武奇* 創(chuàng)建事件: 2019/6/25*/ @Data @Builder @NoArgsConstructor @AllArgsConstructor public class Emp {private Long uuid;private String username;private String email;}在test 測(cè)試類中與redis交互
package com.lanou3g.redisdemo;import com.lanou3g.redisdemo.entity.Emp; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.data.redis.core.ZSetOperations; import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.test.context.junit4.SpringRunner;import javax.annotation.Resource; import java.util.Collections;@RunWith(SpringRunner.class) @SpringBootTest public class RedisDemoApplicationTests {// 如果沒有Spring, 并且還想使用Java操作Redis// 那么需要引入Jedis框架@Resourceprivate RedisTemplate<String, Object> redisTemplate;@Testpublic void contextLoads() {// RedisTemplate里面的方法都是全局指令// 這些指令是與數(shù)據(jù)類型無(wú)關(guān)的// 比如: 刪除key, 設(shè)置過期時(shí)間, 判斷key是否存在等等this.redisTemplate.keys("school").forEach(System.out::println);//判斷key是否存在Boolean boo = this.redisTemplate.hasKey("school");System.out.println(boo ? "key存在" : "key不存在");//刪除Boolean b = this.redisTemplate.delete("school");System.out.println(b ? "刪除成功" : "刪除失敗");}@Testpublic void testString() {// 操作String類型的數(shù)據(jù) // 添加 ValueOperations<String, Object> ops = this.redisTemplate.opsForValue();ops.set("ppppp111888", "藍(lán)鷗3G"); // 序列化轉(zhuǎn)換RedisSerializer<?> keySerializer = this.redisTemplate.getKeySerializer();System.out.println(keySerializer.getClass());}@Testpublic void saveObj() {Emp emp = Emp.builder().uuid(1001L).username("zhangsan").email("zhang3@qq.com").build(); //存儲(chǔ)對(duì)象時(shí)必須使這個(gè)對(duì)象序列化,我們要配置beanValueOperations<String, Object> ops = this.redisTemplate.opsForValue();ops.set("emp", emp);}@Testpublic void readObj() {ValueOperations<String, Object> ops = this.redisTemplate.opsForValue();Emp emp = (Emp) ops.get("emp");System.out.println(emp);}}配置bean
package com.lanou3g.redisdemo.config;import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer;import javax.annotation.PostConstruct; import javax.annotation.Resource;@Configuration @EnableCaching// 啟用緩存 public class RedisConfig {// 配置key的序列化@Beanpublic RedisSerializer keySerializer() {return new StringRedisSerializer();}// 配置value的序列化@Beanpublic RedisSerializer valueSerializer() {// 當(dāng)向Redis中存儲(chǔ)一個(gè)對(duì)象時(shí)候,// 會(huì)把對(duì)象轉(zhuǎn)換為json數(shù)據(jù)存儲(chǔ)到Redis中return new GenericJackson2JsonRedisSerializer();}//@Beanpublic RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(redisConnectionFactory);redisTemplate.setKeySerializer(keySerializer());redisTemplate.setHashKeySerializer(keySerializer());// 如果不配置JSON的序列化, 還想保存對(duì)象,// 那么前提是這個(gè)對(duì)象是可以被序列化的, 也就是說// 對(duì)應(yīng)的類必須是實(shí)現(xiàn)Serializable接口的// 如果需要使用JSON的序列化, 被保存的對(duì)象,// 必須得有默認(rèn)的構(gòu)造方法, 否則對(duì)象能被存上, 但是讀不出來(lái)redisTemplate.setValueSerializer(valueSerializer());redisTemplate.setHashValueSerializer(valueSerializer());return redisTemplate;}//實(shí)體類配置Bean 與配置文件配置沒有任何差異/*<bean id="keySerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer"/><bean id="redisTemplate" class="com.xxx.RedisTemplate"><property key="connectionFactory" ref="redisConnectionFactory"/><property key="keySerializer" ref="keySerializer" /><property key="hashKeySerializer" ref="keySerializer" /></bean>*/}轉(zhuǎn)載于:https://www.cnblogs.com/lxx-1843693653/p/11106654.html
總結(jié)
以上是生活随笔為你收集整理的spring boot 与redis 整合的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中对文件进行读和写
- 下一篇: 浅谈数据库三大范式的理解