什么是Jedis 是 Redis 官方推荐的 java连接开发工具! 使用Java 操作Redis 中间件!如果你要使用 java操作redis,那么一定要对Jedis 十分的熟悉! 两者的命令一样。
1、导入依赖
// https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.11.1'
// https://mvnrepository.com/artifact/redis.clients/jedis
compile group: 'redis.clients', name: 'jedis', version: '3.3.0'
2、编码测试
package com.cxy.redis;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import redis.clients.jedis.Jedis;
import java.util.HashMap;
import java.util.Set;
import java.util.concurrent.TimeUnit;
@SpringBootTest
class RedisApplicationTests {
@Test
public void testPing() {
Jedis jedis = new Jedis("192.168.106.129", 6666);
//如果没有密码,就可以省略下面步骤。
jedis.auth("cxy0809.");
System.out.println(jedis.ping());
}
@Test
public void testKey() {
Jedis jedis = new Jedis("192.168.106.129", 6666);
//如果没有密码,就可以省略下面步骤。
jedis.auth("cxy0809.");
//测试key-value的用法
System.out.println("1.清空数据:" + jedis.flushDB());
System.out.println("2.判断某个键是否存在:" + jedis.exists("username"));
System.out.println("3.新增<'username','lq'>的键值对:" + jedis.set("username", "lq"));
System.out.println("4.新增<'password','123456'>的键值对:" + jedis.set("password", "123456"));
System.out.println("5.系统中所有的键如下:");
Set<String> keys = jedis.keys("*");
System.out.println(keys);
System.out.println("6.删除键password:" + jedis.del("password"));
System.out.println("7.判断键password是否存在:" + jedis.exists("password"));
System.out.println("8.查看键username缩存储的值的类型:" + jedis.type("username"));
System.out.println("9.随机返回key空间的某一个:" + jedis.randomKey());
System.out.println("10.重命名key:" + jedis.rename("username", "myname"));
System.out.println("11.取出改后的myname:" + jedis.get("myname"));
System.out.println("12.按索引查询:" + jedis.select(0));
System.out.println("13.删除当前选择数据库的所有key:" + jedis.flushDB());
System.out.println("14.返回当前数据库中key的数目:" + jedis.dbSize());
System.out.println("15.删除所有数据库中的所有key:" + jedis.flushAll());
}
@Test
public void testString() {
Jedis jedis = new Jedis("192.168.106.129", 6666);
//如果没有密码,就可以省略下面步骤。
jedis.auth("cxy0809.");
jedis.flushDB();
System.out.println("===================增加数据====================");
System.out.println(jedis.set("key1", "value1"));
System.out.println(jedis.set("key2", "value2"));
System.out.println(jedis.set("key3", "value3"));
System.out.println("1.删除键key2:" + jedis.del("key2"));
System.out.println("2.获取键key2:" + jedis.get("key2"));
System.out.println("3.修改key1:" + jedis.set("key1", "valueChanged"));
System.out.println("4.获取key1的值:" + jedis.get("key1"));
System.out.println("5.在key3后面追加值:" + jedis.append("key3", "End"));
System.out.println("6.获取key3的值:" + jedis.get("key3"));
System.out.println("7.增加多个键值对:" + jedis.mset("key4", "value4", "key5", "value5"));
System.out.println("8.获取多个键值对:" + jedis.mget("key1", "key4"));
System.out.println("9.获取多个键值对:" + jedis.mget(""));
System.out.println("10.删除多个键值对:" + jedis.del("key1", "key4"));
System.out.println("11.获取多个键值对:" + jedis.mget("key1", "key2"));
jedis.flushDB();
System.out.println("================新增键值对防止被覆盖================");
System.out.println(jedis.setnx("key1", "value1"));
System.out.println(jedis.setnx("key2", "value2"));
System.out.println(jedis.setnx("key2", "value2-newValue"));
System.out.println(jedis.get("key1"));
System.out.println(jedis.get("key2"));
System.out.println("================新增键值对并设置有效时间================");
System.out.println(jedis.setex("key3", 2, "value3"));
System.out.println(jedis.get("key3"));
try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(jedis.get("key3"));
System.out.println("================获取原值,更新为新值================");
System.out.println(jedis.getSet("key2", "key2GetSet"));
System.out.println(jedis.get("key2"));
System.out.println("截取指定下标key2的字符串:" + jedis.getrange("key2", 2, 4));
}
@Test
public void testList() {
Jedis jedis = new Jedis("192.168.106.129", 6666);
//如果没有密码,就可以省略下面步骤。
jedis.auth("cxy0809.");
jedis.flushDB();
System.out.println("=========添加一个List========");
jedis.lpush("collections", "ArrayList", "Vector", "Stack", "HashMap");
jedis.lpush("collections", "HashSet");
jedis.lpush("collections", "TreeSet");//从左边往进加
jedis.rpush("collections", "HashMap");//从右边往进加
jedis.lpush("collections", "TreeMap");
System.out.println("collections中的内容:" + jedis.lrange("collections", 0, -1));//-1代表倒数第一个
System.out.println("collections中0到3区间的内容:" + jedis.lrange("collections", 0, 3));
System.out.println("============================");
//删除列表指定的值,第二个参数为删除的个数(有重复时)!后add进去的值先被删掉,类似于出栈!
System.out.println("删除指定个数的元素:" + jedis.lrem("collections", 2, "HashMap"));
System.out.println("collections中的内容:" + jedis.lrange("collections", 0, -1));
System.out.println("删除下标0-3区间之外的元素:" + jedis.ltrim("collections", 0, 3));
System.out.println("collections中的内容:" + jedis.lrange("collections", 0, -1));
System.out.println("collections列表出栈(左):" + jedis.lpop("collections"));
System.out.println("collections中的内容:" + jedis.lrange("collections", 0, -1));
System.out.println("collections列表出栈(右):" + jedis.rpop("collections"));
System.out.println("collections中的内容:" + jedis.lrange("collections", 0, -1));
System.out.println("修改指定下标1的内容:" + jedis.lset("collections", 1, "hahaaha"));
System.out.println("collections中的内容:" + jedis.lrange("collections", 0, -1));
System.out.println("============================");
System.out.println("collections的长度:" + jedis.llen("collections"));
System.out.println("获取指定下标1的元素:" + jedis.lindex("collections", 1));
System.out.println("==============排序==============");
jedis.lpush("sortedList", "5", "6", "4", "3", "9", "1");
System.out.println("排序前:" + jedis.lrange("sortedList", 0, -1));
System.out.println("排序后:" + jedis.sort("sortedList"));
}
@Test
public void testSet() {
Jedis jedis = new Jedis("192.168.106.129", 6666);
//如果没有密码,就可以省略下面步骤。
jedis.auth("cxy0809.");
jedis.flushDB();
System.out.println("===============向集合中添加元素(不重复)================");
System.out.println(jedis.sadd("set", "e1", "e3", "e2", "e5", "e7", "e4", "e0", "e8"));
System.out.println(jedis.sadd("set", "e6"));
System.out.println(jedis.sadd("set", "e6"));
System.out.println("set集合中所有的元素为:" + jedis.smembers("set"));
System.out.println("删除一个指定元素e0:" + jedis.srem("set", "e0"));
System.out.println("set集合中所有的元素为:" + jedis.smembers("set"));
System.out.println("删除多个指定元素e7,e5:" + jedis.srem("set", "e7", "e5"));
System.out.println("set集合中所有的元素为:" + jedis.smembers("set"));
System.out.println("随机的移除集合中的一个元素:" + jedis.spop("set"));
System.out.println("随机的移除集合中的一个元素:" + jedis.spop("set"));
System.out.println("set集合中所有的元素为:" + jedis.smembers("set"));
System.out.println("set集合中的元素个数:" + jedis.scard("set"));
System.out.println("e1是否在set集合中:" + jedis.sismember("set", "e1"));
System.out.println("========================================================");
System.out.println(jedis.sadd("set1", "e1", "e3", "e2", "e5", "e7", "e4", "e6"));
System.out.println(jedis.sadd("set2", "e1", "e3", "e0", "e5", "e8", "e4", "e6"));
System.out.println("将set1中的元素删掉e1并将e1存入set3中:" + jedis.smove("set1", "set3", "e1"));
System.out.println("将set1中的元素删掉e5并将e5存入set3中:" + jedis.smove("set1", "set3", "e5"));
System.out.println("set1集合中所有的元素为:" + jedis.smembers("set1"));
System.out.println("set3集合中所有的元素为:" + jedis.smembers("set3"));
System.out.println("=====================集合运算=======================");
System.out.println("set1集合中所有的元素为:" + jedis.smembers("set1"));
System.out.println("set2集合中所有的元素为:" + jedis.smembers("set2"));
System.out.println("set1与set2集合的并集:" + jedis.sunion("set1", "set2"));
System.out.println("set1与set2集合的交集:" + jedis.sinter("set1", "set2"));
System.out.println("set1与set2集合的差集:" + jedis.sdiff("set1", "set2"));//set1与set2中去掉交集后剩余的元素
jedis.sinterstore("set4", "set1", "set2");//求交集并将交集保存在dstkey中
System.out.println("set4集合中所有的元素为:" + jedis.smembers("set4"));
}
@Test
public void tsetHash() {
Jedis jedis = new Jedis("192.168.106.129", 6666);
//如果没有密码,就可以省略下面步骤。
jedis.auth("cxy0809.");
HashMap<String, String> map = new HashMap<String, String>();
map.put("k1", "v1");
map.put("k2", "v2");
map.put("k3", "v3");
map.put("k4", "v4");
//添加元素
jedis.hmset("hash", map);
//还可以这么添加
jedis.hset("hash", "k5", "v5");
System.out.println("散列hash的所有键值对:" + jedis.hgetAll("hash"));
System.out.println("散列hash的所有键:" + jedis.hkeys("hash"));
System.out.println("散列hash的所有值:" + jedis.hvals("hash"));
System.out.println("将k6的保存的值加上一个整数,如果k6不存在则添加k6:" + jedis.hincrBy("hash", "k6", 5));
System.out.println("散列hash的所有键值对:" + jedis.hgetAll("hash"));
System.out.println("将k6的保存的值加上一个整数,如果k6不存在则添加k6:" + jedis.hincrBy("hash", "k6", 5));
System.out.println("散列hash的所有键值对:" + jedis.hgetAll("hash"));
System.out.println("删除一个或者多个键值对:" + jedis.hdel("hash", "k1", "k3"));
System.out.println("散列hash的所有键值对:" + jedis.hgetAll("hash"));
System.out.println("散列hash的所有键值对个数:" + jedis.hlen("hash"));
System.out.println("判断k2是否在hash中:" + jedis.hexists("hash", "k2"));
System.out.println("判断k1是否在hash中:" + jedis.hexists("hash", "k1"));
System.out.println("获取hash中的一个值:" + jedis.hmget("hash", "k4"));
System.out.println("获取hash中的多个值:" + jedis.hmget("hash", "k4", "k6"));
}
@Test
public void testZset() {
Jedis jedis = new Jedis("192.168.106.129", 6666);
//如果没有密码,就可以省略下面步骤。
jedis.auth("cxy0809.");
jedis.flushDB();
jedis.zadd("myset", 1, "one");
jedis.zadd("myset", 2, "two");
jedis.zadd("myset", 3, "three");
System.out.println("查看全部的值:" + jedis.zrange("myset", 0, -1));
jedis.flushDB();
jedis.zadd("salsry", 2500, "zhangsan");
jedis.zadd("salsry", 500, "lisi");
jedis.zadd("salsry", 5000, "wangwu");
System.out.println("由高到低排序:" + jedis.zrangeByScore("salsry", "-inf", "+inf"));
System.out.println("由高到低排序:" + jedis.zrevrangeByScore("salsry", "+inf", "-inf"));
System.out.println("查看全部的值:" + jedis.zrange("salsry", 0, -1));
jedis.zrem("salsry", "lisi");
System.out.println("查看全部的值:" + jedis.zrange("salsry", 0, -1));
System.out.println("查看所有元素的个数:" + jedis.zcard("salsry"));
jedis.flushDB();
jedis.zadd("myset", 1, "one");
jedis.zadd("myset", 2, "two");
jedis.zadd("myset", 3, "three");
jedis.zadd("myset", 4, "four");
System.out.println("获取指定区间元素的个数:" + jedis.zcount("myset", 0, 3));
}
}
所有的api命令,就是我们对应的上面学习的指令,一个都没有变化!如上,其实就是中文api。