package cn.com.lzt.common.dao; import java.io.Serializable; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.core.RedisCallback; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Repository; import cn.com.lzt.common.util.SerializeUtil; @Repository public class RedisDaoImpl implements RedisDao { @Autowired protected RedisTemplate redisTemplate; @Override public String testRedis() { return redisTemplate.execute(new RedisCallback() { public String doInRedis(RedisConnection connection) throws DataAccessException { byte[] key = redisTemplate.getStringSerializer().serialize( "testsw"); if (connection.exists(key)) { byte[] value = connection.get(key); String str = redisTemplate.getStringSerializer() .deserialize(value); return str; } else { return "没有从Redis获取相关信息"; } } }); } @Override public void save(final String key, Object value) { final byte[] vbytes = SerializeUtil.serialize(value); redisTemplate.execute(new RedisCallback() { @Override public Object doInRedis(RedisConnection connection) throws DataAccessException { connection.set(redisTemplate.getStringSerializer().serialize(key), vbytes); return null; } }); } @Override public T get(final String key,Class elementType) { return redisTemplate.execute(new RedisCallback() { @Override public T doInRedis(RedisConnection connection) throws DataAccessException { byte[] keybytes = redisTemplate.getStringSerializer().serialize(key); if (connection.exists(keybytes)) { byte[] valuebytes = connection.get(keybytes); @SuppressWarnings("unchecked") T value = (T) SerializeUtil.unserialize(valuebytes); return value; } return null; } }); } @Override public void delete(String key) { redisTemplate.delete(key); } @Override public String getString(final String keyValue) { return redisTemplate.execute(new RedisCallback() { public String doInRedis(RedisConnection connection) throws DataAccessException { byte[] key = redisTemplate.getStringSerializer().serialize( keyValue); if (connection.exists(key)) { byte[] value = connection.get(key); String str = redisTemplate.getStringSerializer() .deserialize(value); return str; } else { return null; } } }); } @Override public void setString(final String key,final String value) { redisTemplate.execute(new RedisCallback() { @Override public String doInRedis(RedisConnection connection) throws DataAccessException { connection.set(key.getBytes(), value.getBytes()); return null; } }); } }