spring-data-redis包 ValueOperations.increment()操作后,获取值时有bug

今天使用spring-data-redis包操作redis,就是简单的使用redis的计数功能,在redis中的操作命令如:incr key;get key;

这两步操作使用spring-data-redis的话,就是这样操作

ValueOperations valueOper=redisTemplate.opsForValue();
valueOper.increment(key,1);
Object value=valueOper.get(key);

但就这个简单的操作,spring-data-redis出错了,研究了源码后,唏嘘不已,给出下面的方案,解决这个问题

	public long getIncrValue(final String key) {
		
		return redisTemplate.execute(new RedisCallback() {
			@Override
			public Long doInRedis(RedisConnection connection) throws DataAccessException {
				RedisSerializer serializer=redisTemplate.getStringSerializer();
				byte[] rowkey=serializer.serialize(key);
				byte[] rowval=connection.get(rowkey);
				try {
					String val=serializer.deserialize(rowval);
					return Long.parseLong(val);
				} catch (Exception e) {
					return 0L;
				}
			}
		});
	}

使用这个方法去获取通过increment()自增的值

你可能感兴趣的:(spring)