Redis的各种语言客户端列表,请参见https:/ / redis.io/clients。其中Java客户端在github上start最高的是 Jedis和Redisson。Jedis提供了完整Redis命令,而Redisson有更多分布式的容器实现。
Jedis
引入依赖
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.3.0</version>
</dependency>
public static void main(String[] args) {
//参数host地址,端口号
Jedis jedis=new Jedis("192.168.43.251",6379);
jedis.auth("123456");
jedis.set("jedis","hello jedis");
System.out.println(jedis.get("jedis"));
//关闭
jedis.close();
}
常用命令测试
import redis.clients.jedis.Jedis;
public class JedisTest {
public static void main(String[] args) throws InterruptedException {
//参数host地址,端口号
Jedis jedis=new Jedis("192.168.43.251",6379);
jedis.auth("123456");
jedis.set("jedis","hello jedis");
System.out.println(jedis.get("jedis"));
//常用命令
System.out.println(jedis.exists("jedis"));
//设置存活时间100s
jedis.expire("jedis",100);
//睡眠1s
Thread.sleep(1000);
System.out.println(jedis.ttl("jedis"));
//setnx重要命令
jedis.setnx("jedis","hello111");
System.out.println(jedis.get("jedis"));
//关闭
jedis.close();
}
}
import redis.clients.jedis.Jedis;
import java.util.List;
import java.util.Set;
public class JedisTest {
public static void main(String[] args) throws InterruptedException {
//参数host地址,端口号
Jedis jedis=new Jedis("192.168.43.251",6379);
jedis.auth("123456");
//键值命令
Set set=jedis.keys("*");
System.out.println(set);
//非字符串结构的命令
jedis.lpush("list1","cy","klxh","ggp");
List list=jedis.lrange("list1",0,-1);
System.out.println(list);
//关闭
jedis.close();
}
}
import redis.clients.jedis.Jedis;
import redis.clients.jedis.SortingParams;
import java.util.List;
import java.util.Set;
public class JedisTest {
public static void main(String[] args) throws InterruptedException {
//参数host地址,端口号
Jedis jedis=new Jedis("192.168.43.251",6379);
jedis.auth("123456");
List list=jedis.lrange("list1",0,-1);
System.out.println(list);
//排序,sort+key 默认从小到大排序,可以设置排序方式(alpha,按照字母排序)
SortingParams params=new SortingParams();
System.out.println(jedis.sort("list1",params.alpha()));
//关闭
jedis.close();
}
}
管道测试
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Pipeline;
/**
* 管道测试类
*/
public class JedisPipeTest {
public static void main(String[] args) {
Jedis jedis=new Jedis("192.168.43.251",6379);
jedis.auth("123456");
//初始化为数值时,仍传输字符串类型
jedis.setnx("pipe","10");
//使用管道
Pipeline pipeline= jedis.pipelined();
for (int i=0;i<10;i++){
pipeline.incr("pipe");
}
//统一提交的命令
pipeline.sync();
System.out.println(jedis.get("pipe"));
jedis.close();
}
}
事务测试
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Transaction;
import java.util.List;
/**
* 事务测试类
*/
public class JedisTransTest {
public static void main(String[] args) {
Jedis jedis=new Jedis("192.168.43.251",6379);
jedis.auth("123456");
List list1=jedis.mget("cy","klxh");
System.out.println(list1);
//jedis.watch("cy");jedis.watch("klxh");事务监控
//希望cy转5元给klxh
//开启事务
Transaction transaction= jedis.multi();
transaction.decrBy("cy",5);
transaction.incrBy("klxh",5);
//取消执行 transaction.discard();
transaction.exec();
list1=jedis.mget("cy","klxh");
System.out.println(list1);
jedis.close();
}
}
JedisPool
Jedis对象并不是线程安全的。为了避免每次使用Jedis对象时都需要重新构建,Jedis提供了JedisPool。JedisPool是基于Commons Pool 2实现的一个线程安全的连接池。
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
* 连接池测试类
*/
public class JedisPoolTest {
public static void main(String[] args) {
//连接池的配置
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(10);//最大连接数
//连接池的创建
JedisPool pool = new JedisPool(config, "192.168.43.251", 6379);
Jedis jedis = null;
try {
//在连接池中拿到一个连接
jedis = pool.getResource();
jedis.auth("123456");
jedis.set("cy","100");
System.out.println(jedis.get("cy"));
} catch (Exception e) {
e.printStackTrace();
} finally {
//还回连接池
if (jedis != null) {
jedis.close();
}
}
pool.close();
}
}