springboot整合redis后, 会提供StringRedisTEmplate和 RedisTemplate 两个模板类供食用, 有时候这并不能知足咱们的需求, 须要使用 connect 处理, 除了 redisTemplate.getConnection() 以外, 还能够使用callback机制进行处理redis
具体使用: spring
@Resource(name = "shardedJedisPool") private ShardedJedisPool shardedJedisPool; @Override public <T> T execute(ConnectionCallback<T> action) { ShardedJedis shardedJedis = null; try{ // 从链接池中获取jedis分片对象 shardedJedis = shardedJedisPool.getResource(); return action.doInRedis(shardedJedis); }catch (Exception e){ System.out.println(e.getMessage()); }finally { if(null != shardedJedis){ shardedJedis.close(); } } return null; } /** * attention:真正封装的方法,很是的简洁干脆 */ public String set(final String key, final String value){ return execute(new ConnectionCallback<String>() { @Override public String doInRedis( ShardedJedis shardedJedis) { return shardedJedis.set(key, value); } }); } public String get(final String key){ return execute(new ConnectionCallback<String>(){ @Override public String doInRedis(ShardedJedis shardedJedis) { return shardedJedis.get(key); } }); }
保存: springboot
redisTemplate.execute(new RedisCallback<Object>() { @Override public Object doInRedis(RedisConnection connection) throws DataAccessException { connection.set( redisTemplate.getStringSerializer().serialize( "user.uid." + user.getUid()), redisTemplate.getStringSerializer().serialize( user.getAddress())); return null; } });
获取: ide
return redisTemplate.execute(new RedisCallback<User>() { @Override public User doInRedis(RedisConnection connection) throws DataAccessException { byte[] key = redisTemplate.getStringSerializer().serialize( "user.uid." + uid); if (connection.exists(key)) { byte[] value = connection.get(key); String address = redisTemplate.getStringSerializer() .deserialize(value); User user = new User(); user.setAddress(address); user.setUid(uid); return user; } return null; } });
删除: ui
redisTemplate.execute(new RedisCallback<Object>() { public Object doInRedis(RedisConnection connection) { connection.del(redisTemplate.getStringSerializer().serialize( "user.uid." + uid)); return null; } });
说实话, 不知道比redistemplate 优在哪.. 有知道的能够跟我说下spa