如何使用Jedis访问Redis数据库
一、Jedis访问单机Redis
- 新建java项目
- 导入jar包
- 新建JedisDemo.java,并编写代码
public static Jedis getJedis() {
Jedis jedis = new Jedis("192.168.43.129",6380 );
return jedis;
}
- 编写main方法测试
public static void main(String[] args) {
Jedis jedis = getJedis();
System.out.println(jedis.ping());
}
- 运行程序,返回PONG,则连接成功
- 接下来拿着jedis对象就可以各种操作啦。
二、jedisPool访问Redis
- 依然用上面的工程做示范
- 内容有点多,在网上找了个挺好的Util类
package cn.cdy.JedisTest;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class JedisUtils {
private static String ADDR = "192.168.43.129";
private static int PORT = 6380;
private static int MAX_ACTIVE = 1024;
private static int MAX_IDLE = 200;
private static int MAX_WAIT = 10000;
private static int TIMEOUT = 10000;
private static boolean TEST_ON_BORROW = true;
private static JedisPool jedisPool = null;
public static final int DEFAULT_DATABASE = 0;
static {
try {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(MAX_ACTIVE);
config.setMaxIdle(MAX_IDLE);
config.setMaxWaitMillis(MAX_WAIT);
config.setTestOnBorrow(TEST_ON_BORROW);
jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT);
} catch (Exception e) {
e.printStackTrace();
}
}
public synchronized static Jedis getJedis() {
try {
if (jedisPool != null) {
Jedis resource = jedisPool.getResource();
System.out.println("redis--服务正在运行: "+resource.ping());
return resource;
} else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void returnResource(final Jedis jedis) {
if(jedis != null) {
jedis.close();
}
}
}
- 在main方法中直接调用getJedis()方法
public static void main(String[] args) {
Jedis jedis = JedisUtils.getJedis();
jedis.ping();
}
- 运行程序,返回PONG则连接成功
三、JedisCluster连接Redis
- 新建ClusterDemo类,并编写代码
public static JedisCluster getCluster() {
HostAndPort node1 = new HostAndPort("192.168.43.129",6380);
HostAndPort node2 = new HostAndPort("192.168.43.129",6381);
HostAndPort node3 = new HostAndPort("192.168.43.129",6382);
HostAndPort node4 = new HostAndPort("192.168.43.129",6383);
HostAndPort node5 = new HostAndPort("192.168.43.129",6384);
HostAndPort node6 = new HostAndPort("192.168.43.129",6385);
Set<HostAndPort> nodeSet = new HashSet<>();
nodeSet.add(node1);
nodeSet.add(node2);
nodeSet.add(node3);
nodeSet.add(node4);
nodeSet.add(node5);
nodeSet.add(node6);
JedisCluster cluster = new JedisCluster(nodeSet);
return cluster;
}
- 在main方法中调用方法,获取JedisCluster对象
public static void main(String[] args) {
JedisCluster cluster = getCluster();
cluster.set("hello", "world");
System.out.println(cluster.get("hello"));
}
- 运行输出
*在Git上发现了一个输出单机和集群Redis所有key的util,在此分享一下
package cn.cdy.JedisTest;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPool;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
public class JedisUtil
{
public static List<String> getKeys(Jedis jedis)
{
List<String> list = new ArrayList<>();
Set<String> set = jedis.keys("*");
if (set.size() != 0)
{
Iterator<String> it = set.iterator();
while (it.hasNext())
{
list.add(it.next()) ;
}
}
else
{
System.out.println("数据库暂时没有数据");
}
return list;
}
public static TreeSet<String> JedisClusterKeys(JedisCluster jedisCluster, String pattern)
{
TreeSet<String> keys = new TreeSet<>();
Map<String, JedisPool> clusterNodes = jedisCluster.getClusterNodes();
for(String k : clusterNodes.keySet())
{
JedisPool jp = clusterNodes.get(k);
Jedis connection = jp.getResource();
try
{
keys.addAll(connection.keys(pattern));
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
connection.close();
}
}
return keys;
}
}