redis不僅可以通過命令行進行操作,同時redis也可以通過javaAPI進行操作,我們可以通過使用javaAPI來對redis數據庫當中的各種數據類型進行操作
第一步:創建maven工程並導入jar包
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>redistest</groupId>
<artifactId>redistest</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<!-- <verbal>true</verbal>-->
</configuration>
</plugin>
</plugins>
</build>
</project>
代碼示例
package com.xu;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class RedisTest {
private JedisPool jedisPool;
/**
* 連接Redis
*/
@BeforeTest
public void connectJedis() {
//創建數據庫連接池
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(10); //設置連接redis的最大空閒數
jedisPoolConfig.setMaxWaitMillis(5000); //設置連接redis-超時時間
jedisPoolConfig.setMaxTotal(50); //設置redis連接最大客戶端數
jedisPoolConfig.setMinIdle(5);
//獲取jedis連接池
jedisPool = new JedisPool(jedisPoolConfig, "node01", 6379);
}
@AfterTest
public void jedisPoolClose() {
jedisPool.close();
}
/**
* 操作Sting類型
*/
@Test
public void stringOperate() {
//獲取redis的客戶端
Jedis jedis = jedisPool.getResource();
//設置string類型的值
jedis.set("jedisKey", "jedisValue");
//獲取值
String jedisKey = jedis.get("jedisKey");
System.out.println(jedisKey);
//計數器
jedis.incr("jincr");
String jincr = jedis.get("jincr");
System.out.println(jincr);
jedis.close();
}
/**
* 操作hash
*/
@Test
public void hashTest() {
Jedis resource = jedisPool.getResource();
//添加數據
resource.hset("jhsetkey","jmapkey","jmapvalue");
resource.hset("jhsetkey","jmapkey2","jmapvalue2");
//獲取所有數據
Map<String, String> jhsetkey = resource.hgetAll("jhsetkey");
for (String s : jhsetkey.keySet()) {
System.out.println(s);
}
//修改數據
resource.hset("jhsetkey","jmapkey2","jmapvalueupdate2");
Map<String, String> jhsetkey2 = resource.hgetAll("jhsetkey");
for (String s : jhsetkey2.keySet()) {
System.out.println("修改數據打印"+s);
}
//刪除數據
resource.del("jhsetkey");
Set<String> jhsetkey1 = resource.keys("jhsetkey");
for (String result : jhsetkey1) {
System.out.println(result);
}
}
/**
* 操作list類型的數據
*/
@Test
public void listOperate(){
Jedis resource = jedisPool.getResource();
//從左邊插入元素
resource.lpush("listkey","listvalue1","listvalue1","listvalue2");
//從右邊移除元素
resource.rpop("listkey");
//獲取所有值
List<String> listkey = resource.lrange("listkey", 0, -1);
for (String s : listkey) {
System.out.println(s);
}
resource.close();
}
/**
* set類型數據操作
*/
@Test
public void setOperate(){
Jedis resource = jedisPool.getResource();
//添加數據
resource.sadd("setkey", "setvalue1", "setvalue1", "setvalue2", "setvalue3");
//查詢數據
Set<String> setkey = resource.smembers("setkey");
for (String s : setkey) {
System.out.println(s);
}
//移除掉一個數據
resource.srem("setkey","setvalue3");
resource.close();
}
}