微服务(二)--redis-client

来源:互联网 发布:大数据应用支撑平台 编辑:程序博客网 时间:2024/06/08 03:13

目录

使用redis已经是十分普遍的事情了
这里写图片描述
以上是自己编写的jar的目录
我们使用spring-data-redis-jpa 的 依赖
利用 fastJson对任意对象进行 StringJson化,同时还设置过期时间

@Componentpublic class RedisClientKValueImpl<V> implements IRedisClientKValue<V> {    @Autowired    private StringRedisTemplate redisTemplate;    protected Class<V> vClass;    public RedisClientKValueImpl() {    }    /**     * 为指定的key设定指定的value     *     * @param appkey 应用模块的固定key部分(必要)     * @param key 对象key(必要)     * @param value 对象值(必要)     * @see com.baozun.unex.common.redis.client.IRedisClientKValue#set(java.lang.String, java.lang.String, java.lang.Object)     */    @Override    public void set(String appkey, String key, V value) {        redisTemplate.opsForValue().set(combineKey(appkey, key), this.serialize(value));    }    /**     * 为指定的key设定指定的value和超时时间     *     * @param appkey 应用模块的固定key部分(必要)     * @param key 对象key(必要)     * @param value 对象值(必要)     * @param timeout 超时时间(单位毫秒)     * @see com.baozun.unex.common.redis.client.IRedisClientKValue#set(java.lang.String, java.lang.String, java.lang.Object, long)     */    @Override    public void set(String appkey, String key, V value, long timeout) {        redisTemplate.opsForValue().set(combineKey(appkey, key), this.serialize(value), timeout, TimeUnit.MILLISECONDS);    }    /**     * 删除指定的key/value     *     * @param appkey 应用模块的固定key部分(必要)     * @param key 对象key(必要)     * @see com.baozun.unex.common.redis.client.IRedisClientKValue#delete(java.lang.String, java.lang.String)     */    @Override    public void delete(String appkey, String key) {        redisTemplate.delete(combineKey(appkey, key));    }    /**     * 批量为指定的key设定指定的value     *     * @param appkey 应用模块的固定key部分(必要)     * @param map 需要设定的值(必要)     * @see com.baozun.unex.common.redis.client.IRedisClientKValue#multiSet(java.lang.String, java.util.Map)     */    @Override    public void multiSet(String appkey, Map<String, ? extends V> map) {        Map<String, String> newMap = new HashMap<String, String>();        for (String key : map.keySet()) {            newMap.put(combineKey(appkey, key), this.serialize(map.get(key)));        }        redisTemplate.opsForValue().multiSet(newMap);    }    /**     * 获取指定的key的value     *     * @param appkey 应用模块的固定key部分(必要)     * @param key 对象key(必要)     * @param value     * @see com.baozun.unex.common.redis.client.IRedisClientKValue#get(java.lang.String, java.lang.String)     */    @Override    public V get(String appkey, String key, Class<? extends V> requireClass) {        return this.deserialize(redisTemplate.opsForValue().get(combineKey(appkey, key)), requireClass);    }    /**     * 为指定的Key的数值递增相应的delta, 原值必须为Long型     *      * @param appkey 应用模块的固定key部分(必要)     * @param key 对象key(必要)     * @param delta 递增的值     * @see com.baozun.unex.common.redis.client.IRedisClientKValue#increment(java.lang.String, java.lang.String, long)     */    @Override    public Long increment(String appkey, String key, long delta) {        return redisTemplate.opsForValue().increment(combineKey(appkey, key), delta);    }    /**     * 设定指定的键值的过期时长     *      * @param appkey 应用模块的固定key部分(必要)     * @param key 对象key(必要)     * @param timeout 超时时长(单位:秒)     * @return 设置成功返回true, 否则false     * @author zejun.dong     * @Date 2017年11月15日上午10:44:16     */    @Override    public Boolean expire(String appkey, String key, final long timeout) {        return redisTemplate.expire(combineKey(appkey, key), timeout, TimeUnit.SECONDS);    }    /**     * 设定指定的键值的过期时长     *      * @param appkey 应用模块的固定key部分(必要)     * @param key 对象key(必要)     * @param date 超时时间     * @return 设置成功返回true, 否则false     * @author zejun.dong     * @Date 2017年11月15日上午10:44:16     */    @Override    public Boolean expireAt(String appkey, String key, final Date date) {        return redisTemplate.expireAt(combineKey(appkey, key), date);    }    /*     * 获取当前的组合key     */    private String combineKey(String appkey, String key) {        return String.format("%s-%s", appkey, key);    }    private String serialize(V value) {        return JSON.toJSONString(value);    }    private V deserialize(String value, Class<? extends V> requireClass) {        return JSON.parseObject(value, requireClass);    }    }
阅读全文
0 0
原创粉丝点击