1. Jedis
- 概念: 一款java操作redis数据库的工具
- 使用步骤:
- 下载jedis相关jar包: jedis的jar包.
- 快速入门使用:
- 创建一个java项目,导入jar包(maven项目就写好配置文件)
- 在启动redis服务器的前提下输入这么几行代码:
@Test
public void test1() {
//1.获取连接,如果使用无参构造,其默认值为: localhost 和 6379端口
Jedis jedis = new Jedis("localhost", 6379);
//2.操作
jedis.set("name", "fanlei");
//3.关闭连接
jedis.close();
}
- 运行之后,打开redis客户端,在黑窗口输入
keys *
,会发现只有一个name
的键存在,输入get name
得到我们代码中的值樊磊
,这就表示我们已经成功存到redis数据库中了2. Jedis操作各种redis的数据结构
- 字符串类型: String(set get del)
public void test1() {
//1.获取连接,如果使用无参构造,其默认值为: localhost 和 6379端口
Jedis jedis = new Jedis("localhost", 6379);
//2.操作
//1. 操作string类型的数据
jedis.set("stringset", "stringtest");
jedis.set("stringset1", "stringtest1");
System.out.println(jedis.get("stringset"));
//3.关闭连接
jedis.close();
}
- 哈希类型: hash,也就是map格式–key,value(map的key不重,重复会覆盖其value,hset hget hdel)
public void test1() {
//1.获取连接,如果使用无参构造,其默认值为: localhost 和 6379端口
Jedis jedis = new Jedis("localhost", 6379);
//2.操作
//操作哈希类型的数据
jedis.hset("key","field","value");
String s = jedis.hget("key", "field");
System.out.println(s);
//设置其过期时间,效果就是将activecode-value存入redis,10秒后自动删除(可以在客户端用keys *观察效果)
String s1 = jedis.setex("activecode", 10, "value");
System.out.println(s1);
//3.关闭连接
jedis.close();
}
- 列表类型: list,例如linkedlist(l/rpush lrange l/rpop)
public void test1() {
//1.获取连接,如果使用无参构造,其默认值为: localhost 和 6379端口
Jedis jedis = new Jedis("localhost", 6379);
//2.操作
//操作list类型的数据
/*这里有一个点需要注意一下,就是因为list是可重复的
所以当服务器不关闭的时候下面这行语句重复运行后,这些value会不断地往对应的key里面存
所以会导致key对应的list越来越大*/
jedis.lpush("listl", "string1","string2");
//listl中顺序:"string1","string2"
jedis.lpush("listr", "string3","string4");
//listr中顺序:"string3","string4"
/*List<String> list = jedis.lrange("listr", 0, -1);
for (String s : list) {
System.out.println(s);
}*/
System.out.println(jedis.lpop("listr"));
//获取长度
System.out.println(jedis.llen("listr"));
//3.关闭连接
jedis.close();
}
- 集合类型: set,例如hashset(sadd smembers srem)
public void test1() {
//1.获取连接,如果使用无参构造,其默认值为: localhost 和 6379端口
Jedis jedis = new Jedis("localhost", 6379);
//2.操作
//操作set集合类型的数据
jedis.sadd("set", "member1", "member2");
jedis.sadd("set1", "member3", "member4");
Set<String> set = jedis.smembers("set");
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
System.out.println("------------------");
//删除set1中的元素
jedis.srem("set", "member2");
Set<String> set1 = jedis.smembers("set");
for (String s : set1) {
System.out.println(s);
}
//3.关闭连接
jedis.close();
}
- 有序集合类型: sortedset(不重复,有序, zadd zrem zrange)
public void test1() {
//1.获取连接,如果使用无参构造,其默认值为: localhost 和 6379端口
Jedis jedis = new Jedis("localhost", 6379);
//2.操作
//操作有序集合类型的数据
jedis.zadd("key", 1, "member1");
jedis.zadd("key", 2, "member2");
jedis.zadd("key", 3, "member3");
Set<String> key = jedis.zrange("key", 0, -1);
for (String s : key) {
System.out.println(s);
}
System.out.println("--------------");
jedis.zrem("key", "member2");
Set<String> key2 = jedis.zrange("key", 0, -1);
for (String s : key2) {
System.out.println(s);
}
//3.关闭连接
jedis.close();
}
Jedis连接池: JedisPool
- 使用:
- 创建连接池对象,
- 调用方法getResource()获取jedis的连接
public void test1() {
//创建jedispoolconfig对象
JedisPoolConfig config = new JedisPoolConfig();
//设置最大连接数
config.setMaxTotal(50);
//设置最大空闲数
config.setMaxIdle(10);
//1.创建jedis连接池对象,可以使用空参,也可以自己配置
JedisPool jedisPool = new JedisPool(config,"localhost");
//2. 获取连接,返回一个jedis对象
Jedis resource = jedisPool.getResource();
//3. 使用
resource.set("pool", "haha");
//4.关闭,将其归还到连接池中
resource.close();
System.out.println(resource.get("pool"));
}