- 导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
- 实例化对象
@Autowired
private StringRedisTemplate redisTemplate;
private Gson gson = new Gson();
- 方法调用
redisTemplate.opsForValue().set(String.format("%d",uid)
,gson.toJson(new Cart(product.getId(),quantity,form.getSelected())));
newCart是获取我需要的参数
使用gson的原因 就是因为 quantity类型是Interger
toJson需要的是Stirng类型 使用gson序列化 为json 就可以传递了
可以看到redis终端显示成功
刷新 成功把数据写入redis
- 当我把ID更改 存入相同的数据时 发现 数据被覆盖了
- 如果用List 去更改数据 需要去遍历 如果List中数据越多 那遍历次数越多 会造成性能损耗
- 应该使用Map来存储 get set查找速度快
- 改为Map存储
HashOperations<String, String, Object> opsForHash = redisTemplate.opsForHash();
opsForHash.put(String.format(CART_REDIS_KEY_TEMPLATE,uid),
String.valueOf(product.getId()),
gson.toJson(new Cart(product.getId(),quantity,form.getSelected())));
代码运行后报错:
org.springframework.dao.QueryTimeoutException: Redis command timed out; nested exception is io.lettuce.core.RedisCommandTimeoutException: io.lettuce.core.RedisCommandTimeoutException: Command timed out after 1 minute(s)
原因:现在存入的是map类型 之前已经存过List 类型不同 需要删除 重新存