|
|-- pom.xml
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
|-- src
| |-- main
| | |-- java
| | | `-- org
| | | `-- example
| | | |-- enums
| | | | `-- RedisKeyEnum.java
package org.example.enums;
public enum RedisKeyEnum {
/**
* 好友清單
*/
FRIEND_LIST("friend_list_"),
;
private String key;
private int expireSeconds;
RedisKeyEnum(String key) {
this(key, Integer.MAX_VALUE);
}
RedisKeyEnum(String key, int expireSeconds) {
this.key = key;
this.expireSeconds = expireSeconds;
}
public String buildKey(String key) {
return getKey() + key;
}
public String getKey() {
return key;
}
public int getExpireSeconds() {
return expireSeconds;
}
}
| | | |-- handler
| | | | `-- FriendHandler.java
package org.example.handler;
import org.example.service.FriendService;
import org.example.service.JedisService;
import java.util.Set;
public class FriendHandler {
public static String rid1 = "1";
public static String rid2 = "2";
public static String rid3 = "3";
public static String rid4 = "4";
public static String rid5 = "5";
public static void main(String[] args) {
JedisService.init();
long s = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
// 添加好友
FriendService.addFriend(rid1, rid2);
FriendService.delFriend(rid1, rid2);
FriendService.addFriend(rid1, rid3);
FriendService.delFriend(rid1, rid3);
FriendService.addFriend(rid1, rid4);
FriendService.delFriend(rid1, rid4);
FriendService.addFriend(rid1, rid5);
FriendService.delFriend(rid1, rid5);
}
FriendService.addFriend(rid1, rid2);
FriendService.addFriend(rid1, rid3);
FriendService.addFriend(rid1, rid4);
FriendService.addFriend(rid1, rid5);
Set<String> friendRidSet = FriendService.getFriendRidSet(rid1);
System.out.println(friendRidSet);
System.out.println("time:" + (System.currentTimeMillis() - s));
}
}
/*
[2, 3, 4, 5]
time:5160
*/
| | | |-- logic
| | | | `-- friend
| | | | |-- FriendChecker.java
package org.example.logic.friend;
public class FriendChecker {
public static void checkSameRidError(String rid1, String rid2) {
if (rid1.equals(rid2)) {
throw new RuntimeException("rid不能相同");
}
}
}
| | | | `-- FriendManager.java
package org.example.logic.friend;
import org.example.enums.RedisKeyEnum;
import org.example.service.JedisService;
import redis.clients.jedis.Jedis;
import java.util.Set;
public class FriendManager {
public static void addFriend(String rid, String targetRid) {
try (Jedis jedis = JedisService.getJedis()) {
String key = FriendManager.getKey(rid);
long rtn = jedis.sadd(key, targetRid);
if (rtn != 1) {
System.out.println("添加好友失敗");
}
}
}
/**
* 删除好友
*
* @param rid
* @param targetRid
* @return
*/
public static void delFriend(String rid, String targetRid) {
try (Jedis jedis = JedisService.getJedis()) {
String key = FriendManager.getKey(rid);
long rtn = jedis.srem(key, targetRid);
if (rtn != 1) {
System.out.println("删除好友失敗");
}
}
}
public static Set<String> getFriendRidSet(String rid) {
try (Jedis jedis = JedisService.getJedis()) {
String key = FriendManager.getKey(rid);
Set<String> ridSet = jedis.smembers(key);
return ridSet;
}
}
private static String getKey(String rid) {
return RedisKeyEnum.FRIEND_LIST.buildKey(rid);
}
}
| | | `-- service
| | | |-- FriendService.java
package org.example.service;
import org.example.logic.friend.FriendChecker;
import org.example.logic.friend.FriendManager;
import java.util.Set;
public class FriendService {
/**
* rid添加targetRid為好友
*
* @param rid
* @param targetRid
*/
public static void addFriend(String rid, String targetRid) {
FriendChecker.checkSameRidError(rid, targetRid);
FriendManager.addFriend(rid, targetRid);
}
/**
* 删除好友
*
* @param rid
* @param targetRid
* @return
*/
public static void delFriend(String rid, String targetRid) {
FriendChecker.checkSameRidError(rid, targetRid);
FriendManager.delFriend(rid, targetRid);
}
/**
* 查詢rid好友清單
*
* @param rid
* @return
*/
public static Set<String> getFriendRidSet(String rid) {
return FriendManager.getFriendRidSet(rid);
}
}
| | | `-- JedisService.java
package org.example.service;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
public class JedisService {
private static JedisPool jedisPool;
public static void init() {
jedisPool = new JedisPool("127.0.0.1", 6379);
}
public static Jedis getJedis() {
return jedisPool.getResource();
}
}
rdm檢視下資料