reids的方法封装

public interface ICacheDAO {
    Object get(String key);


    boolean add(String key, Object value);


    boolean add(String key, Object value, long expireInMilliSeconds);


    boolean replace(String key, Object value);


    boolean replace(String key, Object value, long expireInMilliSeconds);


    boolean delete(String key);

}

//这样封装好的redis方法,我们在使用的时候直接调用 redisDao中的方法就可以了。

public class RedisDAO implements ICacheDAO {


    RedisTemplate redisTemplate;


    public void setRedisTemplate(RedisTemplate redisTemplate) {
        this.redisTemplate = redisTemplate;
    }

//向redis中添加值
    @Override
    public boolean add(final String key, final Object value) {
        redisTemplate.execute(new RedisCallback<Object>() {
            @Override
            public Object doInRedis(RedisConnection connection) throws DataAccessException {
                connection.set(redisTemplate.getStringSerializer().serialize(key), redisTemplate.getValueSerializer().serialize(value));
                return true;
            }
        });
        return false;
    }


    @Override
    public boolean add(final String key, final Object value, final long expireInMilliSeconds) {
        redisTemplate.execute(new RedisCallback<Object>() {
            @Override
            public Object doInRedis(RedisConnection connection) throws DataAccessException {
                connection.setEx(redisTemplate.getStringSerializer().serialize(key), expireInMilliSeconds, redisTemplate.getValueSerializer().serialize(value));
                return true;
            }
        });
        return false;
    }
    //替换redis中的值
    @Override
    public boolean replace(final String key, final Object value) {
        return add(key, value);   //redis没有replace的概念,add即为替换
    }

 //替换redis中的值,并且让redis中的值保存一段时间
    @Override
    public boolean replace(final String key, final Object value, final long expireInMilliSeconds) {
        return add(key, value, expireInMilliSeconds);   //redis没有replace的概念,add即为替换
    }

//获取redis中的值
    @Override
    public Object get(final String key) {//todo 首次无法取到时,会报异常,需要检查一下
        return redisTemplate.execute(new RedisCallback<Object>() {
            @Override
            public Object doInRedis(RedisConnection connection) throws DataAccessException {
                byte[] key_bytes = redisTemplate.getStringSerializer().serialize(key);
                if (connection.exists(key_bytes)) {
                    byte[] value = connection.get(key_bytes);
                    Object object = redisTemplate.getValueSerializer().deserialize(value);
                    return object;
                }
                return null;
            }
        });
    }

//清除redis中的值
    @Override
    public boolean delete(final String key) {
        redisTemplate.execute(new RedisCallback<Object>() {
            public Object doInRedis(RedisConnection connection) {
                connection.del(redisTemplate.getStringSerializer().serialize(key));
                return true;
            }
        });
        return false;
    }
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值