Redis详解(六)Jedis操作Redis

Redis详解(六)Jedis操作Redis

使用jedis在java应用中操作Redis。Jedis几乎涵盖了redis的所有命令。

  • jedis源码:https://github.com/redis/jedis

1.下载jedis和commons-pool

<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>4.1.1</version>
</dependency>

jedis可以单独使用,一般和Commons-Pool一起使用,有多个线程单独操作redis。

<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
    <version>2.11.1</version>
</dependency>

单独使用jedis

package com.firewolf;

import redis.clients.jedis.Jedis;

import java.util.List;

public class StringRedisPrimary {
    public static void main(String[] args) {
//        redis所在的linux的ip
        String host = "127.0.0.1";
//        redis的运行端口
        int port = 6379;
//        创建jedis对象,通过jedis的方法,操作redis数据
        Jedis jedis = new Jedis(host,port);
//        设置访问密码
//        jedis.auth("123456");

//        通过jedis的方法操作redis数据
        jedis.set("eat","减脂餐");
//        获取数据
        System.out.println("eat="+jedis.get("eat"));
//        创建多个key-value
        jedis.mset("lunch","红烧牛肉面","dinner","左旋溜达鸡");
//        获取多个值
        List<String> values = jedis.mget("eat","lunch","dinner");

        for (String v:values){
            System.out.println(v);
        }
//        查询id=1 Student,key == student:1
        if(jedis.exists("student:1")){
            String  student = jedis.get("student:1");
        }else {
//            访问数据库,Student 对象
//            把Student转为json数据
            jedis.set("student:1","{student}");
        }

    }
}

2.Java应用使用Jedis准备

创建一个工具类

package com.firewolf.utils;

import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class RedisUtils {
//    JedisPool有一个就够用了
    private static JedisPool pool;
//    创建线程池
    public static JedisPool open(String host,int port){
        if(pool==null){
//            设置线程池的参数
            JedisPoolConfig config = new JedisPoolConfig();
//            设置最大线程数量
            config.setMaxTotal(100);
//            设置空闲数
            config.setMaxIdle(2);
//            设置检查项为true,避免null的情况   确保线程池获取的对象是可用的。
            config.setTestOnBorrow(true);
//            创建JedisPool  6000是超时时间:6秒钟没有连接到redis就放弃
            pool = new JedisPool(config,host,port,6000);
//            带密码情况
//            pool = new JedisPool(config,host,port,6000,"123456");
        }
        return pool;
    }
  
//    关闭线程池,在整个程序结束后执行
    public static void close(){
        if(pool!=null){
            pool.close();
        }
    }
}

使用线程池

package com.firewolf;

import com.firewolf.utils.RedisUtils;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import java.util.List;

public class StringRedisPrimaryPool {
    public static void main(String[] args) {
        String host = "127.0.0.1";
        int port = 6379;

        Jedis jedis = null;
        JedisPool pool= null;

        try{
//            获取pool,从pool中获取jedis对象
            pool = RedisUtils.open(host,port);
            jedis = pool.getResource();
            jedis.set("eat","减脂餐");
//        获取数据
            System.out.println("eat="+jedis.get("eat"));
//        查询id=1 Student,key == student:1
            if(jedis.exists("student:1")){
                String  student = jedis.get("student:1");
            }else {
//            访问数据库,Student 对象
//            把Student转为json数据
                jedis.set("student:1","{student}");
            }

        }finally {
//            把使用完毕的jedis放回到Pool中,让其他客户端使用
            if(jedis!=null){
                jedis.close();
            }
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值