美文网首页redis学习
Jedis的简单使用

Jedis的简单使用

作者: dodo_lihao | 来源:发表于2017-03-14 11:46 被阅读0次

    说明

    Redis大家都不陌生

    自己也只是简单使用过

    对于java web, Redis有对应封装好的类

    Jedis

    这里,简单记录下使用

    由于内容太少,所以简单写下安装等操作

    充充字数


    Redis的安装和使用 (windows)

    • 百度,找到redis的安装
    • 安装完毕后,找到redis对应的文件夹,用命令行输入
      • redis-server.exe redis.windows.conf
      • 启动服务
    • 再重新打开一个窗口,输入
      • redis-cli.exe -h 127.0.0.1 -p 6379 启动
      • set dodo 123 存入key为dodo,value为123
      • get dodo 取出key为dodo的值
      • get aadbad key不存在,返回nil

    Jedis的Maven配置以及类

    Jedis版本比较多

    自己找到的代码可能已经很旧,先能运行,具体后期再修改

    • 找到对应的jedis的pom配置
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>2.8.0</version>
    </dependency>
    
    • clean下载依赖后,就可以使用了
    • 简单封装
    • 也就是简单的初始化,set,get方法

    初始化

    public static JedisPool getPool(){
        if(jedisPool == null){
            JedisPoolConfig config = new JedisPoolConfig();  
            //控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;  
            //如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。  
            config.setMaxTotal(500);
            //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例。  
            config.setMaxIdle(5);  
            //表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException; 
            config.setMaxWaitMillis(1000 * 100);
            //在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;  
            config.setTestOnBorrow(true);  
            jedisPool = new JedisPool(config, REDIS_HOST, REDIS_PORT); 
        }
        return jedisPool;
    }
    

    set

    /**
     * set 
     * @param key
     * @param value
     * @return
     */
    @SuppressWarnings("deprecation")
    public byte[] set(byte[] key,byte[] value){
        Jedis jedis = jedisPool.getResource();
        try{
            jedis.set(key,value);
            if(this.expire != 0){
                jedis.expire(key, this.expire);
            }
        }finally{
            jedisPool.returnResource(jedis);
        }
        return value;
    }
    
    /**
     * set 
     * @param key
     * @param value
     * @param expire
     * @return
     */
    @SuppressWarnings("deprecation")
    public byte[] set(byte[] key,byte[] value,int expire){
        Jedis jedis = jedisPool.getResource();
        try{
            jedis.set(key,value);
            if(expire != 0){
                jedis.expire(key, expire);
            }
        }finally{
            jedisPool.returnResource(jedis);
        }
        return value;
    }
    

    get

    /**
     * get value from redis
     * @param key
     * @return
     */
    @SuppressWarnings("deprecation")
    public byte[] get(byte[] key){
        byte[] value = null;
        Jedis jedis = jedisPool.getResource();
        try{
            value = jedis.get(key);
        }finally{
            jedisPool.returnResource(jedis);
        }
        return value;
    }
    

    删除

    /**
     * del
     * @param key
     */
    @SuppressWarnings("deprecation")
    public void del(byte[] key){
        Jedis jedis = jedisPool.getResource();
        try{
            jedis.del(key);
        }finally{
            jedisPool.returnResource(jedis);
        }
    }
    

    简单测试

    上面简单封装了一个 JedisApi 类

    这里先for循环,添加一个a到z的list

    再存入对应的值

    public static ArrayList<String> strList = new ArrayList<String>();
    {
        for(int i= 97; i<=122; i++){
            strList.add((char)i+"");
        }
    }
    
    public void doRedis01(){
        JedisApi ja = new JedisApi();
        ja.getPool();
        for(int i=0; i<strList.size();i++){
            ja.set((strList.get(i)+"Key").getBytes(), (strList.get(i)+"Value").getBytes());
        }
        for(int i=0; i<strList.size();i++){
            System.out.println(new String(ja.get((strList.get(i)+"Key").getBytes())));
        }
    }
    

    运行后,可以for循环取出对应的值:

    aValue
    bValue
    cValue
    dValue
    eValue
    fValue
    gValue
    hValue
    iValue
    jValue
    kValue
    lValue
    mValue
    nValue
    oValue
    pValue
    qValue
    rValue
    sValue
    tValue
    uValue
    vValue
    wValue
    xValue
    yValue
    zValue
    

    我们可以从命令行,调用:


    也可以查看对应的值


    后续

    每个工具其实都不难

    东西和代码都很简单(当然,下面Redis的实现肯定很复杂)

    对于现在的我们,重要的是活学活用

    相关文章

      网友评论

        本文标题:Jedis的简单使用

        本文链接:https://www.haomeiwen.com/subject/qxgcnttx.html