文档章节

Java封装reids方法

烟蒂--未落
 烟蒂--未落
发布于 2016/09/05 16:34
字数 506
阅读 26
收藏 0

1.封装方法 


public class RedisService {
    private JedisPool jedisPool;

    public RedisService(JedisPool jedisPool) {
        this.jedisPool = jedisPool;
    }
//获取redis数据源

    public <T> T execute(Function<Jedis, T> function) {
        Jedis jedis = null;
        try {
            jedis = jedisPool.getResource();
            return function.callBack(jedis);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (jedis != null) {
                jedis.close();
            }
        }
        return null;
    }

    /**
     * Atomically return and remove the first (LPOP) or last (RPOP) element of the list. For example
     * if the list contains the elements "a","b","c" LPOP will return "a" and the list will become
     * "b","c".
     * <p/>
     * If the key does not exist or the list is already empty the special value 'nil' is returned.
     *
     * @param key
     * @return Bulk reply
     */
    public String lpop(final String key) {
        return execute(new Function<Jedis, String>() {
            @Override
            public String callBack(Jedis jedis) throws IOException {
                return jedis.lpop(key);

            }
        });
    }

   /* public  String set1(final String key){
        return  execute(new Function<Jedis, String>() {
            @Override
            public String callBack(Jedis jedis) throws IOException {
                return redis.;
            }
        });
    }*/

    public String set(final String key, final String value) {
        return execute(new Function<Jedis, String>() {
            @Override
            public String callBack(Jedis jedis) throws IOException {
                return jedis.set(key, value);
            }
        });
    }

    public String set(final String key, final Object value) {
        return execute(new Function<Jedis, String>() {
            @Override
            public String callBack(Jedis jedis) throws IOException {
                if (value instanceof String) {
                    return jedis.set(key, String.valueOf(value));
                } else {
                    return jedis.set(key, JSON.toJSONString(value, SerializerFeature.DisableCircularReferenceDetect, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty, SerializerFeature.WriteNullStringAsEmpty));
                }
            }
        });
    }

    public String get(final String key) {
        return execute(new Function<Jedis, String>() {
            @Override
            public String callBack(Jedis jedis) throws IOException {
                return jedis.get(key);
            }
        });
    }

    public Long lpush(final String key, final String value) {
        return execute(new Function<Jedis, Long>() {
            @Override
            public Long callBack(Jedis jedis) throws IOException {
                return jedis.lpush(key, value);
            }
        });
    }

    public List<String> lrange(final String key, final int start, final int end) {
        return execute(new Function<Jedis, List<String>>() {
            @Override
            public List<String> callBack(Jedis jedis) throws IOException {
                return jedis.lrange(key, start, end);
            }
        });
    }

    public Long lrem(final String key, final Long count, final String value) {
        return execute(new Function<Jedis, Long>() {
            @Override
            public Long callBack(Jedis jedis) throws IOException {
                return jedis.lrem(key, count, value);
            }
        });
    }


    public String set(final String key, final String value, final long timeout, final TimeUnit unit) {
        return execute(new Function<Jedis, String>() {
            @Override
            public String callBack(Jedis jedis) throws IOException {
                String result = jedis.set(key, value);
                jedis.expire(key, Long.valueOf(TimeoutUtils.toSeconds(timeout, unit)).intValue());
                return result;
            }
        });
    }


    public String set(final String key, final String value, final long timeout) {
        return execute(new Function<Jedis, String>() {
            @Override
            public String callBack(Jedis jedis) throws IOException {
                String result = jedis.set(key, value);
                jedis.expire(key, Long.valueOf(timeout).intValue());
                return result;
            }
        });
    }

    public Long expire(final String key, final long timeout, final TimeUnit unit) {
        return execute(new Function<Jedis, Long>() {
            @Override
            public Long callBack(Jedis jedis) throws IOException {
                return jedis.expire(key, Long.valueOf(TimeoutUtils.toSeconds(timeout, unit)).intValue());
            }
        });
    }

    public long del(final String key) {
        return execute(new Function<Jedis, Long>() {
            @Override
            public Long callBack(Jedis jedis) throws IOException {
                return jedis.del(key);
            }
        });
    }

}

2.规范接口

public interface Function<K, T> {
    T callBack(K k) throws IOException;
}

 

 

© 著作权归作者所有

烟蒂--未落
粉丝 0
博文 52
码字总数 22633
作品 0
郑州
程序员
私信 提问
Spring Cloud 2.x系列之springcloud如何使用spring-cache

学了springcloud如何操作数据库进行增删改查,又学了springcloud如何操作reids把数据存储到redis。今天结合数据库操作和reids操作,来看看如何使用SpringCache。SpringCache提供了基于注解的...

技术小能手
2018/09/29
0
0
Spring Cloud 2.x系列之spring cloud如何使用spring-test进行单元测试

上篇和大家学习了spring cloud 如何整合reids,在测试时借用了web形式的restful接口进行的。那还有没有别的方式可以对spring boot和spring cloud编写的代码进行单元测试呢?答案:肯定是有的...

技术小能手
2018/09/26
0
0
一个Redis的问题

java用的jedis连接redis。 reids是安装在虚拟机里面,ip是192.168.144.130,在本地能ping通虚拟机。 虚拟机内的redis服务正常,可以启动,并且执行命令没问题。 问题: java连接不上redis。 ...

汪林
2013/05/09
11.1K
12
115个Java面试题及回答

解释下可用的线程状态. 在执行期间, 线程会处于以下状态中的一种: Runnable: 线程已准备就绪, 但没有立即运行. Running: 处理器正在执行的线程代码. Waiting: 处于阻塞状态的线程, 等待外部某...

Yamazaki
2014/04/25
0
0
什么是Java API 它提供的核心包的主要功能是什么?

Java API就是Java所提供的标准类库它把程序设计所需要的常用的方法和接口分类封装成包。 在Java API中主要包括核心java包、javax扩展包和org扩展包等。核心java 包中封装了程序设计所需要的主...

jdroid
2012/03/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql报错 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

CentOS 6.5 下安装配置 mysql 使用yum安装,具体过程参见最下边的参考文章。 安装之后启动失败: [root@localhost ~]# service mysqld startStarting mysqld: ...

BG2KNT
13分钟前
1
0
IOC的学习(1)

IOC IOC创建bean的4种方式: 无参构造器, 有参构造器,其中<constructor-arg>可以通过index="0"或者type="int"来指定构造方法参数。 静态工厂方法,factory-method。 普通工厂方法,需要指定......

太猪-YJ
26分钟前
1
0
tomcat 莫名奔溃问题

Apr 24, 2019 6:18:11 PM org.apache.coyote.AbstractProtocol pause INFO: Pausing ProtocolHandler ["http-nio-8080"] Apr 24, 2019 6:18:12 PM org.apache.coyote.AbstractProtocol pause......

mellen
44分钟前
3
0
组件开发规范 class名身份识别

组件需要通过一个组件共有的class来标识这个组件,外部调用的时候,可以通过锁定这个class来方便地改变组件的css样式。 设置方式 .my-checkbox { width: 20px; height: 20px; font-...

Carbenson
52分钟前
3
0
如何在工作中快速成长?致工程师的10个简单技巧

阿里妹导读:阿里有句非常经典的土话,“今天的最好表现,是明天的最低要求。”如何挖掘潜能、发现更好的自己?今天,阿里巴巴高级无线开发专家江建明将认知升级的方法总结出来,帮助你获得快...

阿里云云栖社区
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部