Redis详解(六)Jedis操作Redis
1.下载jedis和commons-pool
单独使用jedis 2.Java应用使用Jedis准备
Redis详解(六)Jedis操作Redis使用jedis在java应用中操作Redis。Jedis几乎涵盖了redis的所有命令。
jedis源码:https://github.com/redis/jedis 1.下载jedis和commons-pool
redis.clients jedis 4.1.1
jedis可以单独使用,一般和Commons-Pool一起使用,有多个线程单独操作redis。
单独使用jedisorg.apache.commons commons-pool2 2.11.1
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 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();
}
}
}
}



