NOSQL非关系型数据库-Jedis客户端
概念
Jedis是一款Java操作的redis数据库的工具
使用步骤
1. 下载Jedis的jar包
2. 使用测试
package com.web.Jedis.test;
import org.junit.Test;
import redis.clients.jedis.Jedis;
/**
* @author OldAZ-PC
* jedis的测试类
*/
public class JedisTest {
/**
* 快速入门
* */
@Test
public void test1(){
//1.获取连接
Jedis jedis = new Jedis("localhost", 6379);
//2.操作
jedis.set("username","shangsan");
//3.关闭连接
jedis.close();
}
}
3. Java代码执行前:
4. Java代码执行后
Jedis操作各种redis中的数据结构
1. 字符串类型 string
set
get
2. 哈希类型 hash
map 格式
hset
hget
3. 列表类型 list
linkedlist格式。支持重复元素
lpush/rpush
lpop/rpop
4.集合类型 set
不允许重复元素
sadd
srem
5. 有序集合类型 sortedset
不允许重复元素,且元素有序
zadd
zrem
数据结构操作代码
package com.web.Jedis.test;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @author OldAZ-PC
* jedis的测试类
*/
public class JedisTest {
/**
* 快速入门
* */
@Test
public void test1(){
//1.获取连接
Jedis jedis = new Jedis("localhost", 6379);
//2.操作
jedis.set("username","shangsan");
//3.关闭连接
jedis.close();
}
/**
* String数据
* */
@Test
public void test2(){
//1.获取连接
//如果使用空参构造,默认值 “localhost”,6379
Jedis jedis = new Jedis("localhost", 6379);
//2.操作
jedis.set("username","shangsan");
System.out.println(jedis.get("username"));
//可以使用setext()方式储存过期时间的key value
// 将actived:hehe 键值对存入redis,并且20秒以后自动删除键值对
jedis.setex("actived",20,"hehe");
//3.关闭连接
jedis.close();
}
/**
* Hash数据结构
* */
@Test
public void test3(){
//1.获取连接
//如果使用空参构造,默认值 “localhost”,6379
Jedis jedis = new Jedis("localhost", 6379);
//2.操作
//存储hash
jedis.hset("user","name","lisi");
jedis.hset("user","age","24");
jedis.hset("user","gender","male");
//获取 hash
System.out.println( jedis.hget("user","name"));
//获取hah的所有map中的元素
Map<String, String> user = jedis.hgetAll("user");
System.out.println(user);
//遍历
Set<String> keys = user.keySet();
for (String key : keys) {
//获取value
String value = user.get(key);
System.out.println(key+":"+value);
}
//3.关闭连接
jedis.close();
}
/**
* list数据结构
* */
@Test
public void test4(){
//1.获取连接
//如果使用空参构造,默认值 “localhost”,6379
Jedis jedis = new Jedis();
//2.操作
//存储数据
jedis.lpush("mylist","a","b","c","d");//从左边存
jedis.rpush("mylist","a","b","c","d");//从右边存
//获取数据
List<String> mylist = jedis.lrange("mylist", 0, -1);
System.out.println(mylist);
//list弹出
String lpop = jedis.lpop("mylist");
System.out.println(lpop);
String rpop = jedis.rpop("mylist");
System.out.println(rpop);
//3.关闭连接
jedis.close();
}
/**
* set数据结构
* */
@Test
public void test5(){
//1.获取连接
//如果使用空参构造,默认值 “localhost”,6379
Jedis jedis = new Jedis();
//2.操作
//存储数据
jedis.sadd("myset","java","php","c++");
//获取数据
System.out.println(jedis.smembers("myset"));
//3.关闭连接
jedis.close();
}
/**
* sortedset数据结构
* */
@Test
public void test6(){
//1.获取连接
//如果使用空参构造,默认值 “localhost”,6379
Jedis jedis = new Jedis();
//2.操作
//存储数据
jedis.zadd("mysortedset",1,"老赵");
jedis.zadd("mysortedset",2,"老钱");
jedis.zadd("mysortedset",3,"老孙");
jedis.zadd("mysortedset",4,"老王");
//获取数据
System.out.println(jedis.zrange("mysortedset",0,-1));
//3.关闭连接
jedis.close();
}
}
Jedis连接池
JedisPool
连接池的使用
1. 创建JedisPool
2. 调用getResource()方法获取Jedis连接
/**
* jedis连接池的使用
*/
@Test
public void test7() {
//0.创建一个配置对象
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(50);
config.setMaxIdle(50);
//1.创建Jedis连接池对象
JedisPool jedisPool = new JedisPool(config, "localhost", 6379);
//2.获取连接
Jedis jedis = jedisPool.getResource();
//3.使用
jedis.set("hehe", "haha");
//关闭,归还到连接池中
jedis.close();
}
3. config的详细配置:
连接池工具类
- JedisPool工具类
- 加载配置文件,配置连接池参数
- 提供获取连接的方法
JedisPoolUtils代码
package com.web.Jedis.util;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* JedisPool工具类
* 加载配置文件,配置连接池参数
*提供获取连接的方法
*/
public class JedisPoolUtils {
private static JedisPool jedisPool;
static {
//读取配置文件
InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
//创建properties对象
Properties pro = new Properties();
//关联文件
try {
pro.load(is);
} catch (IOException e) {
e.printStackTrace();
}
//获取数据,设置到config中
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));
config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));
//初始化Jedispool
jedisPool = new JedisPool(config,pro.getProperty("host"),Integer.parseInt(pro.getProperty("port")));
}
/*获取连接的方法*/
public static Jedis getJedis(){
return jedisPool.getResource();
}
}
测试工具类
/**
* jedis连接池工具类的使用
*/
@Test
public void test8() {
//通过连接池工具类获取
Jedis jedis = JedisPoolUtils.getJedis();
//使用
jedis.set("hello", "world");
//关闭,归还连接池
jedis.close();
}