一、键操作:
二、字符串操作:
三、整数和浮点数操作:
四、列表(List)操作:
五、集合(Set)操作:
六、哈希(Hash)操作:
七、有序集合(Zsort)操作:
八、排序操作:
Java 连接 MySql 我们有 mysql-connector ,连接 Redis 我们有 jedis。
九、实例
引入依赖
- <dependency>
- <groupId>redis.clients</groupId>
- <artifactId>jedis</artifactId>
- <version>2.9.0</version>
- </dependency>
对应的是这两个 jar 包:
使用 Jedis 提供的 API
package com.qjl.pems.test;
import java.util.Set;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Transaction;
/**
* 类描述:测试Redis的客户端Jedis
*/
public class JedisTest {
/**
* 测试与redis的连通性
*/
@Test
public void testPing() {
Jedis jedis = new Jedis("192.168.198.130", 6379);
System.out.println(jedis.ping());
jedis.close();
}
/**
* 测试redis常用api
*/
@Test
public void testRedisAPI() {
Jedis jedis = new Jedis("192.168.198.130", 6379);
// String info = jedis.info("replication");
// System.out.println(info);
jedis.set("k1", "v1");
jedis.set("k2", "v2");
jedis.set("k3", "v3");
System.out.println(jedis.get("k2"));
Set<String> sets = jedis.keys("*");
System.out.println(sets.size());
jedis.close();
}
/**
* 演示主从复制
*/
@Test
public void testMasterSlave() {
Jedis jedisM = new Jedis("192.168.198.130", 6379);
Jedis jedisS = new Jedis("192.168.198.130", 6380);
jedisS.slaveof("192.168.198.130", 6379);
jedisM.set("name", "qujianlei");
String result = jedisS.get("name");
System.out.println(result);
jedisM.close();
jedisS.close();
}
/**
* 演示事务
*/
@Test
public void testTransaction() {
Jedis jedis = new Jedis("192.168.198.130", 6379);
jedis.set("balanceA", "100"); // A账户可用余额
jedis.set("balanceB", "220"); // B账户可用余额
// 互斥锁(锁key)
jedis.watch("balanceA");
System.out.println("=====开始转账 A-->B 50 =====");
Transaction tx = jedis.multi();
tx.decrBy("balanceA", 50);
tx.incrBy("balanceB", 50);
tx.exec();
System.out.println("=====转账结束=====");
// 解锁全部被watch的key
jedis.unwatch();
System.out.println("======开始取款=====");
System.out.println("A账户可用余额:" + jedis.get("balanceA"));
System.out.println("B账户可用余额:" + jedis.get("balanceB"));
jedis.close();
}
}
jedis 作为一个数据库同样也有数据库连接池 JedisPool,封装了一个简单的获取 Jedis 连接池的工具类(单例模式):
package com.qjl.pems.test;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class JedisPoolUtil {
private volatile static JedisPool JEDIS_POOL = null;
private JedisPoolUtil() {}
public static JedisPool getJedisPool() {
if (JEDIS_POOL == null) {
synchronized(JedisPoolUtil.class) {
if (JEDIS_POOL == null) {
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(500); // 500个连接
poolConfig.setMaxIdle(32); // 最大的空闲连接
poolConfig.setMaxWaitMillis(100 * 1000); // 最长的等待时间
poolConfig.setTestOnBorrow(true); // 获得一个jedis连接时检测可用性
JEDIS_POOL = new JedisPool(poolConfig, "192.168.198.130", 6379);
}
}
}
return JEDIS_POOL;
}
}
测试类如下:
package com.qjl.pems.test;
import java.util.Set;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.Transaction;
/**
* 类描述:测试Redis的客户端Jedis
*/
public class JedisTest {
/**
* 测试jedis连接池
*/
@Test
public void testJedisPool() {
// 1.获取连接池
JedisPool jedisPool = JedisPoolUtil.getJedisPool();
// 2.获取某个连接
Jedis jedis = jedisPool.getResource();
// 3.设置键值
jedis.slaveofNoOne(); // 成为 master
jedis.set("a", "b");
// 4.获取键对应的值
System.out.println(jedis.get("a"));
}
}
转载:https://blog.csdn.net/zhangguanghui002/article/details/78770071