建立项目时须要导入的包
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> */ }