1.jedis的基本使用
1.1jedis的介绍:
- Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如java、C、C#、C++、php、Node.js、Go等。 在官方网站里列一些Java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis、等其中官方推荐使用Jedis和Redisson。 在企业中用的最多的就是Jedis,Jedis同样也是托管在github上,地址:https://github.com/xetorthio/jedis 下载jedis解压后得到jar包如下:
1.2 jedis的基本操作
1.2.1jedis常用API:
方法 | 解释 |
new Jedis(host, port) | 创建jedis对象,参数host是redis服务器地址,参数port是redis服务端口 |
set(key,value) | 设置字符串类型的数据 |
get(key) | 获得字符串类型的数据 |
hset(key,field,value) | 设置哈希类型的数据 |
hget(key,field) | 获得哈希类型的数据 |
lpush(key,values) | 设置列表类型的数据 |
lpop(key) | 列表左面弹栈 |
rpop(key) | 列表右面弹栈 |
del(key) | 删除指定的key |
1.2.2 jedis的基本操作:
package com.sunny.web;
import redis.clients.jedis.Jedis;
import java.util.List;
public class jedisDemo {
public static void main(String[] args) {
/**
* 使用jedis操作Redis
* 操作Redis刚才使用都是命令,刚才的命令变成了jedis里面的方法
* set key value--->java中的方法 set(String key,String value);
*/
//1.创建jedis对象,用于连接Redis
/**
* new jedis(String host,int port);
* host,指定Redis服务器的地址
* port,指定服务器占用端口号
*/
Jedis jedis = new Jedis("localhost",6379);
//2,操作字符串类型数据
//写入
jedis.set("name", "zhangshan");
//读取
String value = jedis.get("name");
//打印
System.out.println("name="+value);
//3.操作list类型数据
//写入
jedis.lpush("mylist","one","two","three");
//读取
List mylist = jedis.lrange("mylist", 0, -1);
//打印
System.out.println("mylist"+mylist);
//4.关闭连接
jedis.close();
}
}
2.1 jedis连接池的使用
2.1.1jedis连接池的基本概念:
- jedis连接资源的创建于销毁是很消耗程序性能,所有jedis为我们提供了jedis的池化技术,jedisPool在创建时初始化一些连接资源存储到连接池中,使用jedis连接资源时不需要创建,而是从连接池中获取一个资源进行Redis的操作,使用完毕之后,不需要销毁该jedis连接资源,而是将资源归还给连接池,供其他请求使用。
2.1.2 jedisPool的基本使用:
package com.sunny.web;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.util.List;
public class jedisDemo2 {
public static void main(String[] args) {
//1.创建jedis连接池,并从连接池里面获取连接
//创建配置对象
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(10);//最大连接数
config.setMaxWaitMillis(30000);//用户最大等待时间
//创建连接池对象
// public JedisPool(GenericObjectPoolConfig poolConfig, String host, int port)
JedisPool jedisPool = new JedisPool(config,"localhost",6379);
//从连接池里面获取连接对象jedis
Jedis jedis = jedisPool.getResource();
//2,操作字符串类型数据
//写入
jedis.set("name", "zhangshan");
//读取
String value = jedis.get("name");
//打印
System.out.println("name="+value);
//3.操作list类型数据
//写入
jedis.lpush("mylist","one","two","three");
//读取
List mylist = jedis.lrange("mylist", 0, -1);
//打印
System.out.println("mylist"+mylist);
//4.关闭连接
jedis.close();
}
}
2.1.3 编写jedis连接池工具:
在src目录下创建jedis.properties
#最大连接数
maxTotal=10
#用户超时时间
maxWaitMillis=30000
#redis服务器地址
host=localhost
#端口号
port=6379
JedisUtil.java
package com.sunny.utils;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.util.ResourceBundle;
public class JedisUtil {
private static JedisPool jedisPool;
//静态代码块初始化
static{
//读取jedis.properties配置文件解析里面的数据
//ResourceBundle,专门用于解析properties文件,可以根据文件的名字就可以解析文件
ResourceBundle resourceBundle = ResourceBundle.getBundle("jedis");//会自动读取类路径里面的文件
//读取里面的数据
int maxTotal = Integer.parseInt(resourceBundle.getString("maxTotal"));
int maxWaitMillis = Integer.parseInt(resourceBundle.getString("maxWaitMillis"));
String host = resourceBundle.getString("host");
int port = Integer.parseInt(resourceBundle.getString("port"));
//创建配置对象
JedisPoolConfig config= new JedisPoolConfig();
config.setMaxTotal(maxTotal);//最大连接数
config.setMaxWaitMillis(maxWaitMillis);//用户最大等待超时时间,单位毫秒数
//创建连接池对象
//public JedisPool(GenericObjectPoolConfig poolConfig, String host, int port)
jedisPool = new JedisPool(config,host,port);
}
//方便用户获取一个连接对象
public static Jedis getJedis(){
return jedisPool.getResource();
}
}
测试代码
package com.sunny.web;
import com.sunny.utils.JedisUtil;
import redis.clients.jedis.Jedis;
import java.util.List;
public class jedisDemo3 {
public static void main(String[] args) {
//使用工具类获取jedis连接
Jedis jedis = JedisUtil.getJedis();
//2,操作字符串类型数据
//写入
jedis.set("name", "zhangshan");
//读取
String value = jedis.get("name");
//打印
System.out.println("name="+value);
//3.操作list类型数据
//写入
jedis.lpush("mylist","one","two","three");
//读取
List mylist = jedis.lrange("mylist", 0, -1);
//打印
System.out.println("mylist"+mylist);
//4.关闭连接
jedis.close();
}
}