1、
@Configuration // public class AppConfig { // 创建对象,spring托管 <bean ... @Bean public JedisPool jedisPool() { JedisPool jedisPool = new JedisPool("localhost", 6379); return jedisPool; } }
2、根据查询用户 ID 信息(redis缓存,用户信息以json字符串保存(序列化)
以 string 的形式存储
@Service public class UserService { @Autowired JdbcTemplate jdbcTemplate; // spring提供jdbc一个工具(mybastis类似) @Autowired JedisPool jedisPool; /** * 根据ID查询用户信息 (redis缓存,用户信息以json字符串格式存在(序列化)) */ public User findUserById(String userId) { User user = null; Jedis jedis = null; try { jedis = jedisPool.getResource(); // 1、查询 redis 是否有数据 String result = jedis.get(userId); if (result != null && "".equals(result)) { // 把json 字符串转换为 User user = (User) JSONObject.parse(result); return user; // 命中缓存 } //2、查询数据库 String sql = "select * from tb_user_base where uid=?"; user = jdbcTemplate.queryForObject(sql, new String[]{userId}, new BeanPropertyRowMapper<>(User.class)); // 3、将数据放入redis String userJsonStr = JSONObject.toJSONString(user); jedis.set(userId, userJsonStr); } finally { if (jedis != null) { jedis.close(); } } return user; } }
以hash的形式存储
/** * 根据ID查询用户信息 (redis缓存,用户信息以json字符串格式存在(序列化)) */ public User findUserById(String userId) { User user = null; Jedis jedis = null; try{ jedis = jedisPool.getResource(); // 1、 查询 redis 是否有数据 -- hash 方式 Map<String, String> result = jedis.hgetAll(userId); if(result != null && "".equals(result)){ // map 对象转换为User user = new User(); user.setAge(Integer.valueOf(result.get("age"))); user.setImg(result.get("img")); user.setUname(result.get("uname")); user.setUid(result.get("uid")); return user; } //2、查询数据库 String sql = "select * from tb_user_base where uid=?"; user = jdbcTemplate.queryForObject(sql, new String[]{userId}, new BeanPropertyRowMapper<>(User.class)); // 3、将数据放入redis String userJsonStr = JSONObject.toJSONString(user); HashMap<String, String> userInfo = new HashMap<>(); userInfo.put("age", String.valueOf(user.getAge())); userInfo.put( "uname", String.valueOf(user.getUname())); userInfo.put( "uid", String.valueOf(user.getUid())); userInfo.put( "img", String.valueOf(user.getImg())); jedis.hmset(userId, userInfo); }finally { if(jedis != null){ jedis.close(); } } return user; } /** * 根据ID查询用户名称 */ public String findUserNameById(String userId) { String uname = null; Jedis jedis = null; try{ jedis = jedisPool.getResource(); // 1、查询 redis 是否有数据 uname = jedis.hget(userId, "uname"); if(uname != null && "".equals(uname)){ return uname; // 命中缓存 } //2、查询数据库 String sql = "select uname from tb_user_base where uid=?"; uname = jdbcTemplate.queryForObject(sql, new String[]{userId}, String.class); // 3、将数据放入redis jedis.hset(userId, "uname", uname); }finally { if(jedis != null){ jedis.close(); } } return uname; }
github : https://github.com/szjomin/redisDemo/tree/master/redis/redis01