建立項目時須要導入的包
java
在application.yml 配置文件中配置須要的mysql
spring: datasource: url: jdbc:mysql://localhost:3306/數據庫名?useSSL=false&serverTimezone=Asia/Shanghai username: 用戶名 password: 密碼 jpa: show-sql: true hibernate: ddl-auto: none #redis 能夠不配,默認就是locatihost redis: host: localhost port: 6379 cache: type: redis
建立一個實體類redis
package com.lanou3g.redisdemo.entity; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; /** * 建立人: 武奇 * 建立事件: 2019/6/25 */ @Data @Builder @NoArgsConstructor @AllArgsConstructor public class Emp { private Long uuid; private String username; private String email; }
在test 測試類中與redis交互spring
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框架 @Resource private RedisTemplate<String, Object> redisTemplate; @Test public void contextLoads() { // RedisTemplate裏面的方法都是全局指令 // 這些指令是與數據類型無關的 // 好比: 刪除key, 設置過時時間, 判斷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 ? "刪除成功" : "刪除失敗"); } @Test public void testString() { // 操做String類型的數據 // 添加 ValueOperations<String, Object> ops = this.redisTemplate.opsForValue(); ops.set("ppppp111888", "藍鷗3G"); // 序列化轉換 RedisSerializer<?> keySerializer = this.redisTemplate.getKeySerializer(); System.out.println(keySerializer.getClass()); } @Test public void saveObj() { Emp emp = Emp.builder() .uuid(1001L) .username("zhangsan") .email("zhang3@qq.com") .build(); //存儲對象時必須使這個對象序列化,咱們要配置bean ValueOperations<String, Object> ops = this.redisTemplate.opsForValue(); ops.set("emp", emp); } @Test public void readObj() { ValueOperations<String, Object> ops = this.redisTemplate.opsForValue(); Emp emp = (Emp) ops.get("emp"); System.out.println(emp); } }
配置beansql
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的序列化 @Bean public RedisSerializer keySerializer() { return new StringRedisSerializer(); } // 配置value的序列化 @Bean public RedisSerializer valueSerializer() { // 當向Redis中存儲一個對象時候, // 會把對象轉換爲json數據存儲到Redis中 return new GenericJackson2JsonRedisSerializer(); } // @Bean public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory); redisTemplate.setKeySerializer(keySerializer()); redisTemplate.setHashKeySerializer(keySerializer()); // 若是不配置JSON的序列化, 還想保存對象, // 那麼前提是這個對象是能夠被序列化的, 也就是說 // 對應的類必須是實現Serializable接口的 // 若是須要使用JSON的序列化, 被保存的對象, // 必須得有默認的構造方法, 不然對象能被存上, 可是讀不出來 redisTemplate.setValueSerializer(valueSerializer()); redisTemplate.setHashValueSerializer(valueSerializer()); return redisTemplate; } //實體類配置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> */ }