redis整合spring (二)
阿新 • • 發佈:2020-09-18
config
@Configuration // public class AppConfig { @Value("${spring.redis.host}") String host; @Value("${spring.redis.port}") int port; // 建立物件,spring託管 <bean ... @Bean public JedisPool jedisPool() { JedisPool jedisPool = new JedisPool("localhost", 6379); return jedisPool; } @Bean public RedisTemplate redisTemplate(){ RedisTemplate redisTemplate = new RedisTemplate(); redisTemplate.setConnectionFactory(redisConnectionFactory()); return redisTemplate; } public RedisConnectionFactory redisConnectionFactory(){ RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration(); redisStandaloneConfiguration.setHostName(host); redisStandaloneConfiguration.setPort(port); RedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory(redisStandaloneConfiguration); return redisConnectionFactory; } }
service
@Service public class UserService { @Autowired JdbcTemplate jdbcTemplate; // spring提供jdbc一個工具(mybastis類似) @Autowired RedisTemplate redisTemplate; /** * 根據ID查詢使用者資訊 (redis快取,使用者資訊以json字串格式存在(序列化)) */ public User findUserById(String userId) { // 1、read cache User user = null; Object result = (User)redisTemplate.opsForValue().get("userId"); if(user != null){ return (User)result; } // 2、查詢資料庫 String sql = "select * from tb_user_base where uid=?"; user = jdbcTemplate.queryForObject(sql, new String[]{userId}, new BeanPropertyRowMapper<>(User.class)); // set cache redisTemplate.opsForValue().set(userId, user); return user; } }