Java版的Redis (六)

2014-11-24 08:22:21 · 作者: · 浏览: 2
else if ("Get".equals(request.get(0))) {
response = redis.Get((String) request.get(1));
}

ObjectOutputStream output = new ObjectOutputStream(socket.getOutputStream());
output.writeObject(response);

input.close();
output.close();
socket.close();
}
}
catch (Exception e) {
e.printStackTrace();
}
finally {
if (serverSocket != null) {
try {
serverSocket.close();
} catch (IOException e) {
}
}
}

}

}[java] view plaincopyprint package com.cdai.studio.redis;

import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.net.Socket;
import java.util.Arrays;
import java.util.List;

public class RedisClient {

public void Set(String key, Object value) {
sendRequest(Arrays.asList("Set", key, value));
}

public Object Get(String key) {
return sendRequest(Arrays.asList("Get", key));
}

private Object sendRequest(List payload) {
Socket socket = null;
try {
socket = new Socket("localhost", 1234);

ObjectOutputStream output = new ObjectOutputStream(socket.getOutputStream());
output.writeObject(payload);
output.flush();

ObjectInputStream input = new ObjectInputStream(socket.getInputStream());
Object response = input.readObject();

output.close();
input.close();
return response;
} catch (Exception e) {
e.printStackTrace();
} finally {
if (socket != null) {
try {
socket.close();
} catch (Exception e) {
}
}
}
return null;
}

}
package com.cdai.studio.redis;

import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.net.Socket;
import java.util.Arrays;
import java.util.List;

public class RedisClient {

public void Set(String key, Object value) {
sendRequest(Arrays.asList("Set", key, value));
}

public Object Get(String key) {
return sendRequest(Arrays.asList("Get", key));
}

private Object sendRequest(List payload) {
Socket socket = null;
try {
socket = new Socket("localhost", 1234);

ObjectOutputStream output = new ObjectOutputStream(socket.getOutputStream());
output.writeObject(payload);
output.flush();

ObjectInputStream input = new ObjectInputStream(socket.getInputStream());
Object response = input.readObject();

output.close();
input.close();
return response;
} catch (Exception e) {
e.printStackTrace();
} finally {
if (socket != null) {
try {
socket.close();
} catch (Exception e) {
}
}
}
return null;
}

}


4.实现简单的Twitter
[java] view plaincopyprint package com.cdai.studio.redis;

import java.util.Arrays;

public class RedisTest {

public static void main(String[] args) {

RedisDB redis = new RedisDB();

// 1.Create user follow relationship
redis.SAdd("users", "A", "B", "C");

// User A follows B, C
redis.SAdd("users:A:following", "B", "C");
redis.SAdd("users:B:follo