Jedis是一个java操作redis数据库的类库,我们来简单看下jedis操作redis的具体功能实现
#jedis连接redis
// 连接测试
private static void test1(){
// 如果使用空参构造,默认值 "localhost",6379端口
Jedis jedis = new Jedis("127.0.0.1",6379);
jedis.set("jName","lisi");
jedis.close();
}
#jedis操作各种redis中的数据结构
- 操作String
private static void test2(){
Jedis jedis = new Jedis();
jedis.set("jName","lisi");
String name = jedis.get("jName");
System.out.println("name = " + name);
jedis.close();
}
// 使用setex设置字符过期时间
private static void test3(){
Jedis jedis = new Jedis();
String jCode = "602501";
// 设置验证码过期时间
jedis.setex("activeCode",10,jCode);
String code = jedis.get("activeCode");
System.out.println("code = " + code);
jedis.close();
}
- 操作hash
private static void test4(){
Jedis jedis = new Jedis();
jedis.hset("user","name","emonH");
jedis.hset("user","age","28");
jedis.hset("user","job","java");
String name = jedis.hget("user","name");
System.out.println("name=" + name);
Map<String,String> user = jedis.hgetAll("user");
Set<String> keys = user.keySet();
for (String str:keys) {
System.out.println(str + ":" + user.get(str));
}
jedis.hdel("user","name");
user = jedis.hgetAll("user");
System.out.println("keys = " + user);
jedis.close();
}
- 操作list
private static void test5(){
Jedis jedis = new Jedis();
jedis.lpush("jList","a","b","c");
List<String> jList = jedis.lrange("jList",0,-1);
System.out.println("jList = " + jList);
jedis.rpush("jList","a","b","c");
jList = jedis.lrange("jList",0,-1);
System.out.println("jList = " + jList);
jedis.lpop("jList");
jList = jedis.lrange("jList",0,-1);
System.out.println("jList = " + jList);
jedis.rpop("jList");
jList = jedis.lrange("jList",0,-1);
System.out.println("jList = " + jList);
jedis.close();
}
- 操作set
private static void test6(){
Jedis jedis = new Jedis();
jedis.sadd("jSet","aa","aa","cd","df");
Set<String> jSets = jedis.smembers("jSet");
System.out.println("jSets = " + jSets);
jedis.srem("jSet","aa");
jSets = jedis.smembers("jSet");
System.out.println("jSets = " + jSets);
jedis.spop("jSet");
jSets = jedis.smembers("jSet");
System.out.println("jSets = " + jSets);
jedis.close();
}
- 操作 sortedset
private static void test7(){
Jedis jedis = new Jedis();
jedis.zadd("zList",1,"java");
jedis.zadd("zList",2,"PHP");
jedis.zadd("zList",3,"C++");
jedis.zadd("zList",1,"C#");
Set<String> zList = jedis.zrange("zList",0,-1);
System.out.println("zList = " + zList);
jedis.zrem("zList","java");
zList = jedis.zrange("zList",0,-1);
System.out.println("zList = " + zList);
jedis.close();
}
#jedis连接池:JedisPool
- 创建JedisPool连接池对象
- 调用方法 getResource()方法获取Jedis连接
- 我们列出jedis连接池所有配置项到redis.properties中,内容如下:
// 最大活动对象数
redis.pool.maxTotal=1000
// 最大能够保持idel状态的对象数
redis.pool.maxIdle=100
// 最小能够保持idel状态的对象数
redis.pool.minIdle=50
// 当池内没有返回对象时,最大等待时间
redis.pool.maxWaitMillis=10000
// 当调用borrow Object方法时,是否进行有效性检查
redis.pool.testOnBorrow=true
// 当调用return Object方法时,是否进行有效性检查
redis.pool.testOnReturn=true
// “空闲链接”检测线程,检测的周期,毫秒数。如果为负值,表示不运行“检测线程”。默认为-1.
redis.pool.timeBetweenEvictionRunsMillis=30000
// 向调用者输出“链接”对象时,是否检测它的空闲超时;
redis.pool.testWhileIdle=true
// 对于“空闲链接”检测线程而言,每次检测的链接资源的个数。默认为3.
redis.pool.numTestsPerEvictionRun=50
// redis服务器的IP
redis.ip=127.0.0.1
// redis服务器的Port
redis.port=6379
- 我们创建一个工具类获取连接池对象
public class JedisPoorUtil {
private static JedisPool jedisPool;
static{
InputStream in = JedisPoorUtil.class.getClassLoader().getResourceAsStream("jedis.properties");
Properties po = new Properties();
try {
po.load(in);
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxIdle(Integer.parseInt(po.getProperty("redis.pool.maxIdle")));
config.setMaxTotal(Integer.parseInt(po.getProperty("redis.pool.maxTotal")));
jedisPool = new JedisPool(config,po.getProperty("redis.ip"),Integer.parseInt(po.getProperty("redis.port")));
} catch (IOException e) {
e.printStackTrace();
}
}
public static JedisPool getJedisPool(){
return jedisPool;
}
}
- 接下来就是使用连接池对象
private static void test8(){
Jedis jedis = JedisPoorUtil.getJedisPool().getResource();
jedis.set("jPoor","test cuccess");
System.out.println("zList = " + jedis.get("jPoor"));
jedis.close();
}