使用Java操作Redis(二)

时间:2023-03-10 03:09:52
使用Java操作Redis(二)

上篇文章中我们可以看到,通过自己动手编码来操作Redis是相当繁琐的,实际上我们在重复制造*。Redis网站上列举出了一些方便操作Redis的常用工具。

使用Java操作Redis(二)

可供Java选择的比较多,这里介绍一下Jedis的使用。

Jedis 所需Jar包下载地址:

http://search.maven.org/#artifactdetails%7Credis.clients%7Cjedis%7C2.4.2%7Cjar

http://search.maven.org/#artifactdetails%7Corg.apache.commons%7Ccommons-pool2%7C2.0%7Cjar

將commons-pool2-2.0.jar和jedis-2.4.2.jar同时添加到build path中。

Redis的value同时支持strings, hashes, lists, sets类型,下面代码为使用Jedis对这几种类型的插入和获取操作。

package com.csii.redis.test;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.HashMap;
import java.util.Map;
import java.util.Set; import org.junit.Assert;
import org.junit.Test;
//注意:为方便测试代码中用到了JUnit
import redis.clients.jedis.Jedis; public class RedisTest extends Assert{
public static Jedis jedis = null;
static{
jedis = new Jedis("localhost",6379, 500);
jedis.connect();
jedis.auth("123456");
jedis.flushAll();
}
/**
* strings类型操作
*/
@Test
public void testStrings() {
String status = jedis.set("name", "Rongbo_J");
assertEquals("OK", status);
String name = jedis.get("name");
System.out.println(name); }
/**
* hashes类型操作
*/
@Test
public void testHashes()
{
HashMap<String,String> personInfo = new HashMap<String,String>();
personInfo.put("name", "Rongbo_J");
personInfo.put("age", "18");
personInfo.put("weight", "120");
String status = jedis.hmset("person", personInfo);
assertEquals("OK",status); Map<String, String> person = jedis.hgetAll("person"); System.out.println(person); }
/**
* lists类型操作
*/
@Test
public void testLists()
{
//lists为线性结构,通过lpush和lpop添加和移除list中的元素。
for(int i=0;i<20;i++)
{
jedis.lpush("array","i:" + i);
}
long len = jedis.llen("array"); System.out.println(len); for(int i=0;i<len;i++)
{
System.out.println(jedis.lpop("array"));
} long len2 = jedis.llen("array"); System.out.println(len2);
} /**
* sets类型操作
*/
@Test
public void testSets()
{
for(int i=0;i < 20;i++)
{
jedis.sadd("mySet", "SetElmt"+i);
} long len = jedis.scard("mySet");
System.out.println(len); Set<String> mySet = jedis.smembers("mySet"); System.out.println(mySet); }
/**
* 不使用Jedis操作Redis,运行此测试方法时需要注释掉静态代码块部分
*/
@Test
public void testWithoutJedis()
{
try {
Socket sock = new Socket("127.0.0.1",6379); OutputStream out = sock.getOutputStream();
InputStream in = sock.getInputStream();
String sendStr = "*3\r\n$3\r\nSET\r\n$4\r\nname\r\n$8\r\nrongbo_j\r\n";
out.write(sendStr.getBytes());
sendStr = "*2\r\n$3\r\nGET\r\n$5\r\nname\r\n";
out.write(sendStr.getBytes()); byte[] buffer = new byte[512];
in.read(buffer);
System.out.println(new String(buffer)); } catch (Exception e) {
e.printStackTrace();
}
}
}

代码中只列举了两三种操作,实际上Jedis对每种类型提供的操作方式非常多,使用起来也非常简单,这里没有全部列举。