springboot向redis写入数据步骤
1、引入redis依赖并配置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2、在主配置文件application.xml中配置redis数据库
redis:
host: 127.0.0.1 ----> redis装在哪上,就用哪的ip,本机的话用127.0.0.1,虚拟机的话用虚拟机上的ip
port: 6379
password: ----> 如果没有设置密码就不写这一项
3、写入数据
------引入:<!--json组件:将对象转为字符串、json-->-------------------
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
**********************不带注释**************************************
@Autowired
private StringRedisTemplate redisTemplate;
private Gson gson = new Gson();
HashOperations<String, String, String> opsForHash = redisTemplate.opsForHash();//hash结构存储redis
String redisKey = String.format(CART_REDIS_KEY_TEMPLATE, uid);//reids的key(如:cart_1),第一个参数
Cart cart;
String value = opsForHash.get(redisKey, String.valueOf(product.getId()));
if (StringUtils.isEmpty(value)) {
cart = new Cart(product.getId(), quantity, form.getSelected());
}else {
cart = gson.fromJson(value, Cart.class);
cart.setQuantity(cart.getQuantity() + quantity);
}
opsForHash.put(redisKey,
String.valueOf(product.getId()),
gson.toJson(cart));//序列化,再将cart对象转为json,然后put进redis
************************带注释*********************************************
@Autowired
private StringRedisTemplate redisTemplate;//spring封装好的
private Gson gson = new Gson();//一款将对象转为json、string的组件
//写入到redis:1、引入redis依赖并配置
//key: cart_1
//三个string参数:1、reids的key(如:cart_1),后面两个string是存到redis中的KV值(2、HK:商品id,3、HV:商品信息json)
HashOperations<String, String, String> opsForHash = redisTemplate.opsForHash();//hash结构存储redis
String redisKey = String.format(CART_REDIS_KEY_TEMPLATE, uid);//reids的key(如:cart_1),第一个参数
Cart cart;
//2、先读redis中数据,看是否有该商品
String value = opsForHash.get(redisKey, String.valueOf(product.getId()));//得到redis中的cart对象的json形式
if (StringUtils.isEmpty(value)) {
//value为空,表示没有该商品, 则新增一个
cart = new Cart(product.getId(), quantity, form.getSelected());
}else {
//已经有了(json格式),数量+1
cart = gson.fromJson(value, Cart.class);//取出存到redis中的cart对象的json形式,反序列化将json转为cart对象
cart.setQuantity(cart.getQuantity() + quantity);//数量+1
}
opsForHash.put(redisKey,
String.valueOf(product.getId()),
gson.toJson(cart));//序列化,再将cart对象转为json,然后put进redis