【三】Redis从入门到放弃---Jedis操作Redis
(1)Jedis是什么?
Jedis是Redsi官方首选的java客户端开发包,使用Jedis可以很方便的操作Redis,使用方法跟Redis的操作命令差不多的,例如:jedis.flushDB()清空数据,jedis.set("key1","value1")给key1设置数据,jedis.exists("key1")判断键是否存在等等。
下面简单的介绍Jedis是如果操作Redis的:
- pom.xml添加依赖
- 连接Redis: 指定Redis服务Host和port,设置密码(没有的话不需要),操作Redis,最后关闭Redis连接。
(2)Jedis的maven依赖
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.2.0</version> </dependency>
(3)Jedis对key、String、List、Set、Hash、Zset的操作
public static void main(String[] args) { Jedis jedis = new Jedis("47.106.195.84", 6379); // 如果 Redis 服务设置了密码,需要下面这行,没有就不需要 jedis.auth("*******"); String pong = jedis.ping(); System.out.println("连接成功:" + pong); jedis.close(); }
控制台输出:
连接成功:PONG
操作key
@Test public void demo1() throws InterruptedException { Jedis jedis = new Jedis("47.106.195.84", 6379); jedis.auth("******"); jedis.setex("k1", 10, "v1");//设置过期时间10秒 jedis.set("k2", "v2"); jedis.set("k3", "v3"); //获取所有的key Set<String> keys = jedis.keys("*"); System.out.println(keys.size()); for (String key : keys) { System.out.println(key); } TimeUnit.MILLISECONDS.sleep(5000);//睡眠5秒钟 System.out.println(jedis.exists("k1"));//k1是否存在 System.out.println(jedis.ttl("k1"));//k1剩余有效时间 System.out.println(jedis.get("k2"));//获取k1的值 jedis.close(); }
控制台输出:
对String类型的操作
@Test public void demo2() { Jedis jedis = new Jedis("47.106.195.84", 6379); jedis.auth("******"); jedis.set("str0","v0");//单个设置值 jedis.mset("str1", "v1", "str2", "v2", "str3", "v3");//批量设置值 jedis.setex("str4",10,"v4");//设置有效时间10秒 jedis.append("str0","20210731");//在某个key后追加数据 System.out.println(jedis.substr("str0",0,-1));//截取某个key的值,从0到-1是截取所有 System.out.println(jedis.get("str4"));//获取单个key的值 System.out.println(jedis.mget("str1", "str2", "str3"));//获取多个key的值 }
控制台输出:
对List类型的操作
@Test public void demo3() { Jedis jedis = new Jedis("47.106.195.84", 6379); jedis.auth("*****"); jedis.lpush("listKey","1","2","3");//从左边添加多个数据 jedis.rpush("listKey","5","6","7");//从右边添加多个数据 System.out.println(jedis.lrange("listKey", 0, -1));//获取该key所有值 jedis.lpop("listKey");//从左边吐出一个 jedis.rpop("listKey");//从右边吐出一个 System.out.println(jedis.lrange("listKey", 0, -1));//获取该key所有值 System.out.println(jedis.llen("listKey"));//获取key对应list长度 jedis.lset("listKey",1,"8");//修改key对应list下标n对应的元素 System.out.println(jedis.lrange("listKey", 0, -1));//获取该key所有值 System.out.println(jedis.lindex("listKey",3));//获取key对应list下标3对应元素 System.out.println(jedis.sort("listKey"));//key对应list的元素从小到大排序 }
控制台输出:
对Set类型的操作
@Test public void demo4() { Jedis jedis = new Jedis("47.106.195.84", 6379); jedis.auth("*****"); jedis.sadd("k1", "v1"); jedis.sadd("k1", "v2"); jedis.sadd("k1", "v3"); jedis.sadd("k1", "v4"); Set<String> smembers = jedis.smembers("k1");//获取该集合的所有值 for (String k : smembers) { System.out.println(k); } //判断是否含有该value System.out.println(jedis.sismember("k1", "v2")); jedis.srem("k1", "v2");//删除集合中的某个元素 System.out.println(jedis.smembers("k1")); jedis.sadd("k2","v1","v2","v3","v4"); System.out.println(jedis.scard("k2"));//获取set里元素个数 System.out.println(jedis.sinter("k1","k2"));//获取k1和k2下对应元素的交集 System.out.println(jedis.sunion("k1","k2"));//获取k1和k2下对应元素的并集 System.out.println(jedis.sdiff("k1","k2"));//获取k1和k2下对应元素的差集 }
控制台输出:
对Hash类型的操作
@Test public void demo5() { Jedis jedis = new Jedis("47.106.195.84", 6379); jedis.auth("******"); jedis.hset("hash1", "userName", "妖妖灵"); System.out.println(jedis.hget("hash1", "userName")); Map<String, String> map = new HashMap<String, String>(); map.put("age", "18"); map.put("telphone", "1333333333"); map.put("address", "guangzhou"); map.put("email", "yaoyaoling@163.com"); jedis.hmset("hash2", map); System.out.println(jedis.hgetAll("hash2"));//获取hashMap下所有key-value元素 System.out.println(jedis.exists("hash2","age"));//判断key里面是否有age这个field System.out.println(jedis.hvals("hash2"));//获取hashMap下的所有value System.out.println(jedis.hmget("hash2", "telphone", "email")); System.out.println(jedis.hlen("hash2"));//获取key下的元素个数 }
控制台输出
对Zset类型的操作
@Test public void demo6() { Jedis jedis = new Jedis("47.106.195.84", 6379); jedis.auth("******"); jedis.zadd("zset01", 100d, "z1"); jedis.zadd("zset01", 90d, "z2"); jedis.zadd("zset01", 80d, "z3"); jedis.zadd("zset01", 70d, "z4"); //返回有序集合:从最低分到最高分的方式排序集合 Set<String> zrange = jedis.zrange("zset01", 0, -1); System.out.println(zrange); }
控制台输出