在使用java API 操作redis需要导入两个jar包:jedis-2.X.jar、commons-pool2-2.X.jar
1.获取Jedis对象,并建立连接
Jedis jedis=new Jedis("localhost");//默认端口6379
如果redis.conf设置密码验证则需要:jedis.auth(password);
jedis.connect();
2. DML操作
jedis.set();
jedis.get();
3.资源关闭(Jedis对象连接关闭)
jedis.close();
redis中数据类型操作包括:string、list、hash、set(无须) 、sorted set(有序)
1.String操作
jedis.set("name", "zhangsan");
String name =jedis.get("name");
jedis.del("name"); //删除指定key 的对象
boolean b=jedis.exists("name"); //判断是否存在name这个key
2.List操作,redis中的list是一个双向的链表(从左到右)
jedis.lpush("list", "list");
jedis.lpush("list", "vector"); //此时链表的数据为:list vector
jedis.llen("list");//获取list的长度
jedis.lpop("list") ;//获取list最左边的数据,并从list中删除
jedis.rpop("list") ;//获取list最右边的数据,并从list中删除
jedis.lindex("list",0);//获取list最左边的数据
jedis.lindex("list",-1);//获取list最右边的数据
jedis.linsert("list",LIST_POSITION.BEFORE,"vector","mysql");表示在vector的前面(左边)插入数据mysql 并 返回list的长度,LIST_POSITION.AFTER表示右边
jedis.lrange("list", 0, -1);//获取list中所有的数据(从左到右) 分别制定起始下标,-1表示最后一个
jedis.lrem("list", 1, "oracle");//表示删除list中的oracle
3. hash操作
HashMap<String,String> map=new HashMap<String,String>();
map.put("name", "zhangsan");
map.put("gender", "male");
map.put("age", "20");
jedis.hmset("info", map); //插入
jedis.hgetAll("info");//得到map类型
List<String> values=jedis.hmget("info", "name"); //获取具体的map的key的值,这里可以传入多可key
jedis.hlen("info") ;//获取info的key-value的键值对的个数
jedis.hkeys("info");//相当于map的keySet方法,获取该map的key的集合
jedis.hexists("info", "name");//判断是否存在该key
jedis.hdel("info", "name");//删除该map的指定key,这里也可以传入多个key
4.set(无序)操作
jedis.sadd("sets", "1");
jedis.sadd("sets", "2");
jedis.sadd("sets", "3");//添加操作
jedis.sismember("sets", "1");//是否存在该值
jedis.scard("sets");//该set的个数
jedis.smembers("sets");//获取该set返回Set<String>
jedis.srem("sets", "1");//删除指定的一个或者多个值
5.sorted Set(有序)操作,有序集合在于进行插入操作的时候,我们会给它一个得分,其内部会按照这个得分进行升序排序
jedis.zadd("zsets", 0.1, "0.1");
jedis.zadd("zsets", 0.2, "0.2");
jedis.zadd("zsets", 0.3, "0.3");
jedis.zadd("zsets", 0.4, "0.4"); //第二个参数表示得分
jedis.zrange("zsets", 0, -1);//获取一定范围的值,-1表示所有,会按照得分升序输出
jedis.zrevrange("zsets", 0, -1);//表示倒序输出
jedis.zrangeByScore("zsets", 0.2, 0.4);//获取一定得分范围的值
jedis.zrevrangeByScore("zsets", 0.3, 0.1) ;//按分数倒序输出
jedis.zcard("zsets");//获取个数
jedis.zcount("zsets", 0.2, 0.3);获取一定得分范围的元素的个数
jedis.zrem("zsets", "0.1") 删除一个或多个指定的元素
jedis.zremrangeByScore("zsets", 0.1, 0.2);删除指定分数范围内的个数
6. 连接池:预先存放一定数量的连接,以用于提高获取连接的效率
public class JedisPoolUtil {
private static JedisPool pool=null;
static
{
GenericObjectPoolConfig config=new GenericObjectPoolConfig();
config.setMaxTotal(8); 最大的链接数目
config.setMaxIdle(8); 最大的闲置数目
config.setMaxWaitMillis(10000); 等待获取的最大时间,
config.setTestOnBorrow(true); 获取之前进行测试
pool=new JedisPool(config, "localhost",6379,10,"helloworld"); helloworld表示密码验证
}
public static synchronized Jedis getJedis()
{
return pool.getResource(); 获取jedis
}
public static void release(Jedis jedis)
{
pool.returnResourceObject(jedis); 回收资源
}
}