public void putStringByKey(final String key, final String value) { redisTemplate.execute( new RedisCallback<String>() { @Override public String doInRedis(RedisConnection connection) throws DataAccessException { connection.set(key.getBytes(), value.getBytes()); return null; } }); }
// String数据类型 存储一对键值 仅支持value为String类型 public void setString(final String key, final String value) { redisTemplate.execute( new RedisCallback<Serializable>() { public Serializable doInRedis(RedisConnection connection) throws DataAccessException { connection.set( redisTemplate.getStringSerializer().serialize(key), redisTemplate.getStringSerializer().serialize(value)); return null; } }); }
public String getStringByKey(final String key) { return redisTemplate.execute( new RedisCallback<String>() { @Override public String doInRedis(RedisConnection connection) throws DataAccessException { if (connection.exists(key.getBytes())) { return new String(connection.get(key.getBytes())); } return null; } }); }
public boolean setnx(final String key, final String value, Long expireTime) { Boolean result = redisTemplate.execute( new RedisCallback<Boolean>() { @Override public Boolean doInRedis(RedisConnection connection) throws DataAccessException { return connection.setNX(key.getBytes(), value.getBytes()); } }); if (result) redisTemplate.expire(key, expireTime, TimeUnit.MILLISECONDS); return result; }
@Override public boolean setExpireTime(final Object key, final long time) { return template.execute( new RedisCallback<Boolean>() { @Override public Boolean doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer<String> serializer = template.getStringSerializer(); byte[] serializerKey = serializer.serialize((String) key); return connection.expire(serializerKey, time); } }); }
@Override public void clean() { // dangerous template.execute( new RedisCallback<Object>() { @Override public Object doInRedis(RedisConnection connection) throws DataAccessException { connection.flushDb(); return null; } }, true); }
/** * String数据类型 读取键为key的值仅支持value为String类型 * * @param key * @return 字符串 */ public Serializable getString(final String key) { return redisTemplate.execute( new RedisCallback<Serializable>() { @Override public Serializable doInRedis(RedisConnection connection) throws DataAccessException { byte[] byteKey = redisTemplate.getStringSerializer().serialize(key); if (connection.exists(byteKey)) { byte[] value = connection.get(byteKey); String strValue = redisTemplate.getStringSerializer().deserialize(value); return strValue; } return null; } }); }
@Override public boolean existKey(final Object key) { return template.execute( new RedisCallback<Boolean>() { @Override public Boolean doInRedis(RedisConnection connection) throws DataAccessException { byte[] k = null; if (template.getKeySerializer() == null && key instanceof byte[]) { k = (byte[]) key; } else { // 强耦合了Redis本地的Serial方法 StringRedisSerializer strRedisSer = new StringRedisSerializer(); k = strRedisSer.serialize((String) key); } return connection.exists(k); } }, true); }