Java客户端 Jedis
Jedis: 一款java操作redis数据库的工具. 使用步骤: 1. 下载jedis的jar包 2. 使用
代码语言:javascript复制/**
* 快速入门
*/
@Test
public void test1() {
//1.获取链接 host 指定主机名 本机IP port 端口 redis的端口号
Jedis jedis = new Jedis("localhost", 6379);
//2.操作
jedis.set("username", "zhangsan");
//3.关闭连接
jedis.close();
}
Jedis操作各种redis中的数据结构
跟Redis的命令相似 String
代码语言:javascript复制 /**
* jedis操作各种数据结构
* 操作String类型
*/
@Test
public void test2() {
//1.获取链接 host 指定主机名 本机IP port 端口 redis的端口号
Jedis jedis = new Jedis();//如果使用空参构造 默认值是“localhost” 6379端口
//2.操作
//存储
jedis.set("username", "zhangsan");
//获取
String username = jedis.get("username");
System.out.println(username);
//可以使用setex()方法存储可以指定过期时间的key value
//将activecode haha 键值对存入Redis,并且10秒后自动删除该键值对 可以用来存储有时效的激活码
jedis.setex("activecode", 10, "haha");
//3.关闭连接
jedis.close();
}
hash
代码语言:javascript复制 /**
* 操作hash数据格式
*/
@Test
public void test3() {
//1.获取链接 host 指定主机名 本机IP port 端口 redis的端口号
Jedis jedis = new Jedis("localhost", 6379);
//2.操作
//存储hash
jedis.hset("user", "name", "lisi");
jedis.hset("user", "age", "28");
jedis.hset("user", "gender", "male");
//获取hash
String hget = jedis.hget("user", "name");
System.out.println(hget);
//获取hash的所有map中的数据
Map<String, String> user = jedis.hgetAll("user");
Set<String> keySet = user.keySet();
for (String k : keySet) {
//获取value
String s = user.get(k);
System.out.println(k ":" s);
}
//3.关闭连接
jedis.close();
}
list
代码语言:javascript复制 /**
* 操作list数据类型
*/
@Test
public void test4() {
//1.获取链接 host 指定主机名 本机IP port 端口 redis的端口号
Jedis jedis = new Jedis("localhost", 6379);
//2.操作
//存储list
jedis.lpush("mylist", "a", "b", "c");//lpush从左边存
jedis.rpush("mylist", "a", "b", "c");//rpush从右边存
//获取list 范围获取 key:指定所获取list的名称 0 -1 获取所有
List<String> list = jedis.lrange("mylist", 0, -1);
System.out.println(list);
//list的弹出
String element1 = jedis.lpop("mylist");//从左侧弹出一个并返回
System.out.println(element1);
String element2 = jedis.rpop("mylist");//从右侧弹出一个并返回
System.out.println(element2);
//再次获取所有值
//获取list 范围获取 key:指定所获取list的名称 0 -1 获取所有
List<String> list1 = jedis.lrange("mylist", 0, -1);
System.out.println(list1);
//3.关闭连接
jedis.close();
}
set
代码语言:javascript复制/**
* 不允许重复元素
* 操作set类型数据
*/
@Test
public void test5() {
//1.获取链接 host 指定主机名 本机IP port 端口 redis的端口号
Jedis jedis = new Jedis("localhost", 6379);
//2.操作
//set存储 sadd方法
jedis.sadd("myset", "java", "c", "c#");
//set获取 smembers方法
Set<String> set = jedis.smembers("myset");
System.out.println(set);
//3.关闭连接
jedis.close();
}
sortedset
代码语言:javascript复制 /**
* 不允许重复元素,且元素有序
* 操作sortedset数据类型
*/
@Test
public void test6() {
//1.获取链接 host 指定主机名 本机IP port 端口 redis的端口号
Jedis jedis = new Jedis("localhost", 6379);
//2.操作
//存储sortedset元素 zadd方法
jedis.zadd("mysortedset", 3, "盖伦");
jedis.zadd("mysortedset", 21, "锐雯");
jedis.zadd("mysortedset", 0, "乌迪尔");
//获取sortedset
Set<String> mysortedset = jedis.zrange("mysortedset", 0, -1);
System.out.println(mysortedset);
//3.关闭连接
jedis.close();
}
jedis连接池: JedisPool
使用: 1. 创建JedisPool连接池对象 2. 调用方法 getResource()方法获取Jedis连接
连接池方法
代码语言:javascript复制 /**
* jedis连接池使用
*/
@Test
public void test7() {
//创建一个配置对象
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(50);//最大连接数
jedisPoolConfig.setMaxIdle(10);//最大空闲连接
//创建jedis的连接池对象
JedisPool jedisPool = new JedisPool(jedisPoolConfig, "localhost", 6379);
//获取链接
Jedis jedis = jedisPool.getResource();
//操作
jedis.set("hehe", "hahai");
//关闭 归还到连接池中
jedis.close();
}
抽取连接池为一个工具类减少代码冗余 创建连接池工具类
代码语言:javascript复制/**
* 连接池的工具类
* 加载配置文件,配置连接池的参数
* 提供获取链接的方法
* 这是一个新建的类
*/
public class JedisPoolUtils {
private static JedisPool jedisPool;
static{
//读取配置文件
InputStream inputStream = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
//创建properties对象
Properties properties=new Properties();
//关联文件
try {
properties.load(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
//获取数据 设置到JedisPoolConfig中
JedisPoolConfig config=new JedisPoolConfig();
//从配置文件中获取最大连接数 因为获取的是字符串 需要转换成int类型
config.setMaxTotal(Integer.parseInt(properties.getProperty("maxTotal")));
//从配置文件中获取最大空闲数 因为获取的是字符串 需要转换成int类型
config.setMaxIdle(Integer.parseInt(properties.getProperty("setMaxIdle")));
//初始化JedisPool 传入配置类 从配置文件获取ip 端口号
jedisPool=new JedisPool(config,properties.getProperty("host"),Integer.parseInt(properties.getProperty("port")));
}
/**
* 获取链接的方法
*/
public static Jedis getJedis(){
return jedisPool.getResource();
}
}
测试方法
代码语言:javascript复制 /**
* Jedis连接池的工具类使用
*/
@Test
public void test8() {
//通过连接池工具类获取链接
Jedis jedis = JedisPoolUtils.getJedis();
//操作
jedis.set("hello", "world");
//关闭连接归还到连接池中
jedis.close();
}