SpringBoot操作redis
SpringBoot操作redis:
- 添加redis依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <exclusions> <!-- 从依赖关系中排除 --> <exclusion> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> </exclusion> </exclusions> </dependency> - redis中操作hash(原始方法)
private final HashOperations<String, String, String> operations; // 构造注入 public JWTAuthenticationSuccessHandler(RedisTemplate<String, String> redisTemplate) { this.operations = redisTemplate.opsForHash(); } //在redis中存值 operations.put("list", "xx",str.toString()); System.out.println("mysql中查出来的:" + str.toString()); //在redis中取值 String addressName = operations.get("list", "xx");
- 在实体类上添加@RedisHash注解,在唯一字段上加@ID注解
package com.woniu.employee.outlet.dao.mysql.po; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.data.annotation.Id; import org.springframework.data.redis.core.RedisHash; import java.io.Serializable; import java.util.Date; import javax.annotation.Generated; @Data @NoArgsConstructor @AllArgsConstructor @Builder @RedisHash public class Employee implements Serializable { @Id private Long id; private String name; private String job; private Long managerId; private Date hireDate; private Integer salary; private Integer commission; private Long departmentId; private static final long serialVersionUID = 1L; }
- 定义redisDao接口继承 CrudRepository<实体类,主键类型>,自定的 Repository 接口必须继承 CrudRepository,才能“天生”具有存取数据的能力
package com.woniu.employee.outlet.dao.redis; import com.woniu.employee.outlet.dao.mysql.po.Employee; import org.springframework.data.repository.CrudRepository; /** * Created with IntelliJ IDEA. * * @Author: hui * @Date: 2021/12/07/14:27 * @Description: */ public interface EmployeeRedisDao extends CrudRepository<Employee,Long> { }
- 调用EmployeeRedisDao接口实现CRUD工作
package com.woniu.employee.outlet.repository; import com.woniu.employee.outlet.dao.mysql.EmployeeDao; import com.woniu.employee.outlet.dao.mysql.po.Employee; import com.woniu.employee.outlet.dao.redis.EmployeeRedisDao; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Repository; import javax.annotation.Resource; /** * Created with IntelliJ IDEA. * * @Author: hui * @Date: 2021/12/07/14:34 * @Description: */ @Repository @Slf4j public class EmployeeRepository { @Resource private EmployeeDao employeeDao; @Resource private EmployeeRedisDao employeeRedisDao; public Employee getEmployee(Long id) { Employee employee = null; try { //先从redis中取 employee = employeeRedisDao.findById(id).orElseThrow(NullPointerException::new); } catch (NullPointerException e) { //没有取数据库查 employee = employeeDao.selectByPrimaryKey(id).orElseThrow(NullPointerException::new); } return employee; } }
注意:当执行增删改操作,为了保证和数据库数据一致性, redis的缓存要删除

浙公网安备 33010602011771号