https://blog.youkuaiyun.com/djrm11/article/details/83379788
1、Jedis客户端
https://redis.io/clients
2、Jedis源码包与使用介绍
https://github.com/xetorthio/jedis
3、项目中使用
通过maven引入Jedis的依赖包
-
<dependency>
-
<groupId>redis.clients
</groupId>
-
<artifactId>jedis
</artifactId>
-
<version>2.9.0
</version>
-
<type>jar
</type>
-
<scope>compile
</scope>
-
</dependency>
4、Jedis的使用
创建Jedis对象,set方法存储key-value值,get方法获取key对应的值。主要是用于单个redis。
Jedis jedis = new Jedis("192.168.56.180", 6379); jedis.set("Jedis", "Hello Work!"); System.out.println(jedis.get("Jedis")); jedis.close();
这里是使用IDEA编辑器对Jedis类结构的一个关系图,从图中看出Jedis继承BinaryJedis,实现多个接口。
每一个接口都代表了一类Redis命令,例如JedisCommands中包含了SET GET等命令,MultiKeyCommands中包含了针对多个Key的MSET MGET等命令。
5、JedisCluster的使用
Jediscluster类图和jedis类图大致一样,不过jedisCluster有一些命令是不可用的。比如BinaryJedisCluster类被作废的命令。主要是用在集群中。
类图:
6、单个reids中API的测试
-
package com.redis;
-
-
import org.junit.Test;
-
import redis.clients.jedis.Jedis;
-
import redis.clients.jedis.SortingParams;
-
-
import java.sql.Timestamp;
-
import java.text.SimpleDateFormat;
-
import java.util.*;
-
import java.util.concurrent.TimeUnit;
-
-
/**
-
* 单机环境Redis操作:一台Redis服务器
-
*/
-
public class Standalone {
-
private static Jedis jedis;
-
static {
-
jedis = new Jedis("192.168.56.180", 6379);
-
jedis.auth("123456"); // 之前我在redis配置中配置了权限密码,这里需要设置
-
}
-
-
/**
-
* 测试key - value 的数据
-
* @throws InterruptedException
-
*/
-
@Test
-
public void testKey() throws InterruptedException {
-
System.out.println("清空数据:"+jedis.flushDB());
-
System.out.println("判断某个键是否存在:"+jedis.exists("username"));
-
System.out.println("新增
<'username','wukong'>的键值对:"+jedis.set("username", "wukong"));
-
System.out.println("是否存在:"+jedis.exists("name"));
-
System.out.println("新增
<'password','password'>的键值对:"+jedis.set("password", "password"));
-
Set
<String> keys = jedis.keys("*");
-
System.out.println("系统中所有的键如下:"+keys);
-
System.out.println("删除键password:"+jedis.del("password"));
-
System.out.println("判断键password是否存在:"+jedis.exists("password"));
-
System.out.println("设置键username的过期时间为5s:"+jedis.expire("username", 5));
-
TimeUnit.SECONDS.sleep(2);
-
System.out.println("查看键username的剩余生存时间:"+jedis.ttl("username"));
-
System.out.println("移除键username的生存时间:"+jedis.persist("username"));
-
System.out.println("查看键username的剩余生存时间:"+jedis.ttl("username"));
-
System.out.println("查看键username所存储的值的类型:"+jedis.type("username"));
-
}
-
-
/***
-
* 字符串操作
-
* memcached和redis同样有append的操作,但是memcached有prepend的操作,redis中并没有。
-
* @throws InterruptedException
-
*/
-
@Test
-
public void testString() throws InterruptedException {
-
jedis.flushDB();
-
System.out.println("===========增加数据===========");
-
System.out.println(jedis.set("key1","value1"));
-
System.out.println(jedis.set("key2","value2"));
-
System.out.println(jedis.set("key3", "value3"));
-
System.out.println("删除键key2:"+jedis.del("key2"));
-
System.out.println("获取键key2:"+jedis.get("key2"));
-
System.out.println("修改key1:"+jedis.set("key1", "value1Changed"));
-
System.out.println("获取key1的值:"+jedis.get("key1"));
-
System.out.println("在key3后面加入值:"+jedis.append("key3", "End"));
-
System.out.println("key3的值:"+jedis.get("key3"));
-
System.out.println("增加多个键值对:"+jedis.mset("key01","value01","key02","value02","key03","value03"));
-
System.out.println("获取多个键值对:"+jedis.mget("key01","key02","key03"));
-
System.out.println("获取多个键值对:"+jedis.mget("key01","key02","key03","key04"));
-
System.out.println("删除多个键值对:"+jedis.del(new String[]{"key01","key02"}));
-
System.out.println("获取多个键值对:"+jedis.mget("key01","key02","key03"));
-
-
jedis.flushDB();
-
System.out.println("===========新增键值对防止覆盖原先值==============");
-
System.out.println(jedis.setnx("key1", "value1"));
-
System.out.println(jedis.setnx("key2", "value2"));
-
System.out.println(jedis.setnx("key2", "value2-new"));
-
System.out.println(jedis.get("key1"));
-
System.out.println(jedis.get("key2"));
-
-
System.out.println("===========新增键值对并设置有效时间=============");
-
System.out.println(jedis.setex("key3", 2, "value3"));
-
System.out.println(jedis.get("key3"));
-
TimeUnit.SECONDS.sleep(3);
-
System.out.println(jedis.get("key3"));
-
-
System.out.println("===========获取原值,更新为新值==========");//GETSET is an atomic set this value and return the old value command.
-
System.out.println(jedis.getSet("key2", "key2GetSet"));
-
System.out.println(jedis.get("key2"));
-
-
System.out.println("获得key2的值的字串:"+jedis.getrange("key2", 2, 4));
-
}
-
-
/***
-
* 整数和浮点数
-
*/
-
@Test
-
public void testNumber() {
-
jedis.flushDB();
-
jedis.set("key1", "1");
-
jedis.set("key2", "2");
-
jedis.set("key3", "2.3");
-
System.out.println("key1的值:"+jedis.get("key1"));
-
System.out.println("key2的值:"+jedis.get("key2"));
-
System.out.println("key1的值加1:"+jedis.incr("key1"));
-
System.out.println("获取key1的值:"+jedis.get("key1"));
-
System.out.println("key2的值减1:"+jedis.decr("key2"));
-
System.out.println("获取key2的值:"+jedis.get("key2"));
-
System.out.println("将key1的值加上整数5:"+jedis.incrBy("key1", 5));
-
System.out