1.创建项目
2.修改application.yml文件
spring:
redis:
host: 192.168.175.100
port: 6379
jedis:
pool:
max-active: 20
max-idle: 10
max-wait: 10000
3.创建实体
package com.myl.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import java.io.Serializable;
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class User implements Serializable {
private int id;
private String name;
private String sex;
}
4.测试
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Test
void contextLoads() {
//操作字符串类型 需要获取该字符串的对象stringRedisTemplate.opsForValue();
// ValueOperations<String, String> opsForValue = stringRedisTemplate.opsForValue();
// opsForValue.set("k1","v1");
// opsForValue.set("k2","v2");
// System.out.println(opsForValue.get("k1"));
HashOperations<String, Object, Object> forHash = stringRedisTemplate.opsForHash();
forHash.put("h1","name","张三");
System.out.println(forHash.get("h1", "name"));
Map<String,String> map =new HashMap<>();
map.put("age","15");
map.put("name","ykq");
map.put("addr","zz");
forHash.putAll("h2",map);
Collection list= new ArrayList<>();
list.add("name");
list.add("age");
System.out.println(forHash.multiGet("h2", list));
}
序列化和反序列化(IO)
序列化: 把内存《JVM本地方法区,静态区,栈,队,程序计算器》中存在的对象存储到磁盘(网络)上.
//序列化
@Test
public void test() throws Exception{
User user=new User(1,"张三","男");
//创建ObjectOutputStream用于输出Java内存中的对象到指定磁盘中
ObjectOutputStream outputStream=new ObjectOutputStream(new FileOutputStream("D://a.txt"));
outputStream.writeObject(user);//输出
outputStream.close();
}
//反序列化
@Test
void test1()throws Exception{
ObjectInputStream objectInputStream=new ObjectInputStream(new FileInputStream("D://a.txt"));
Object object = objectInputStream.readObject();
System.out.println(object);
}
SpringBoot整合redis序列化
/StringRedisTemplate:存储的value类型必须为String类型。不能存放对象。如果想存放对象,
// 必须把java对象转化为json字符串 借助fastJson工具包
@Autowired
private StringRedisTemplate stringRedisTemplate; //很多
//这个对象可以直接存放对象或集合。 但是再使用前 先为该对象的key和value指定序列化的类型。
@Autowired
private RedisTemplate<Object,Object> redisTemplate;
@Test
public void test(){
//指定RedisTemplate序列化的方式。
redisTemplate.setKeySerializer(new StringRedisSerializer());
//采用的是jdk中自带的序列化方式:
//redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
ValueOperations<Object, Object> forValue = redisTemplate.opsForValue();
forValue.set("user3",new User(1,"ldh","女"));
}
Springboot使用redis作为缓存
1.使用spring缓存注解,再启动类上开启缓存注解
2.再相应的方法上添加缓存注
@CachePut: 先修改数据库,再修改缓存,如果缓存中没有则放入到缓存中该对象。
— cacheNames: 缓存的前缀名称
— key:缓存的后缀名称。
@CacheEvict: 删除数据库并删除缓存。
@Cacheable: 先查询缓存,缓存中如果存在,则直接返回,如果不存在则执行方法体。并把方法体中执行的结果放入到缓存中。