Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如java、C、C#、C++、php、Node.js、Go等。在官方网站里列一些Java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis、等其中官方推荐使用Jedis和Redisson。 在企业中用的最多的就是Jedis。Jedis提供了完整Redis命令,而Redisson有更多分布式的容器实现。
<!--连接驱动-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
@Test
public void test1() {
// 创建一个Redis连接
Jedis jedis = new Jedis("localhost");
System.out.println("连接redis服务端成功!");
//测试redis服务器是否正在运行
System.out.println("redis服务器正在运行吗?" + jedis.ping());
// 获取redis服务的配置信息
System.out.println("redis服务器信息?\n" + jedis.info());
}
注意:
1.防火墙需要放行6379默认端口
2.使用jedis连接redis可能会出现的问题及解决方案
@Test
public void test2() { // String 操作
// 创建一个Redis连接
Jedis jedis = new Jedis("localhost");
String result = jedis.set("name", "hangman");
System.out.println(result);
String name = jedis.get("name");
System.out.println(name);
}
@Test
public void test3() { // Hash操作
// 创建一个Redis连接
Jedis jedis = new Jedis("localhost");
jedis.hset("user","username","root");
jedis.hset("user","password","admin");
String username = jedis.hget("user", "username");
String password = jedis.hget("user", "username");
System.out.println(username);
System.out.println(password);
// 释放资源
jedis.close();
}
@Test
public void test4() { // List操作
// 创建一个Redis连接
Jedis jedis = new Jedis("localhost");
Long result = jedis.lpush("fruits", "apple", "pear", "banana", "tomato");
System.out.println(result);
List<String> fruits = jedis.lrange("fruits", 0, -1);
System.out.println(fruits);
}
@Test
public void test5() { // Set操作
// 创建一个Redis连接
Jedis jedis = new Jedis("localhost");
Long result = jedis.sadd("cities", "lanzhou", "fuzhou", "guangzhou", "hangzhou", "zhengzhou");
System.out.println(result);
Set<String> cities = jedis.smembers("cities");
System.out.println(cities);
}
@Test
public void test6() { // Set操作求交集、差集、并集
// 创建一个Redis连接
Jedis jedis = new Jedis("localhost");
jedis.sadd("cities1", "lanzhou", "fuzhou", "guangzhou", "hangzhou", "zhengzhou");
jedis.sadd("cities2", "meizhou", "guangzhou", "quanzhou", "fuzhou", "ganzhou");
// [guangzhou, fuzhou]
Set<String> sinter = jedis.sinter("cities1", "cities2");
System.out.println(sinter);
// [zhengzhou, hangzhou, lanzhou]
Set<String> sdiff = jedis.sdiff("cities1", "cities2");
System.out.println(sdiff);
// [fuzhou, guangzhou, hangzhou, lanzhou, meizhou, ganzhou, quanzhou, zhengzhou]
Set<String> sunion = jedis.sunion("cities1", "cities2");
System.out.println(sunion);
}
@Test
public void test7() { // zset操作
// 创建一个Redis连接
Jedis jedis = new Jedis("localhost");
jedis.zadd("students",100,"xiaohui");
jedis.zadd("students",80,"xiaolan");
jedis.zadd("students",99,"xiaojun");
// 获取所有的key
Set<String> students = jedis.zrange("students", 0, -1);
System.out.println(students);
System.out.println();
Set<Tuple> studentsTuple = jedis.zrangeWithScores("students", 0, -1);
for (Tuple tuple : studentsTuple) {
System.out.println("key: "+tuple.getElement());
System.out.println("score: "+tuple.getScore());
}
// 释放资源
jedis.close();
}
package com.dfbz.demo01;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
* @author lscl
* @version 1.0
* @intro:
*/
public class Demo02_Pool {
@Test
public void test1() {
// 创建Jedis连接池配置对象
JedisPoolConfig config = new JedisPoolConfig();
// 最大连接数
config.setMaxTotal(30);
// 最大空闲连接数
config.setMaxIdle(10);
// 最小空闲连接数
config.setMinIdle(5);
// 最长等待毫秒数
config.setMaxWaitMillis(3000);
// 创建一个Jedis连接池
JedisPool jedisPool = new JedisPool(config, "127.0.0.1", 6379);
for (int i = 1; i <=31; i++) {
Jedis jedis = jedisPool.getResource();
if (i == 20) {
jedis.close(); // 将连接归还到连接池
}
System.out.println(jedis);
}
jedisPool.close(); // 释放资源
}
}