package com.fr.plugin.db.redis.help.client; import com.fanruan.api.log.LogKit; import com.fr.json.JSON; import com.fr.json.JSONFactory; import com.fr.plugin.db.redis.core.accessor.EmbedRedis; import com.fr.plugin.db.redis.help.RedisClient; import com.fr.plugin.db.redis.help.ScriptBridge; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeMap; /** * @author richie * @version 10.0 * Created by richie on 2019-08-26 */ public abstract class BaseRedisClient implements RedisClient { EmbedRedis jedis; BaseRedisClient(EmbedRedis jedis) { this.jedis = jedis; } @ScriptBridge public String get(String key) { long start = System.currentTimeMillis(); try { return jedis.get(key); } finally { LogKit.info("Fetch data from redis spend time {} ms.", System.currentTimeMillis() - start); } } @ScriptBridge public String hget(String key, String field) { long start = System.currentTimeMillis(); try { return jedis.hget(key, field); } finally { LogKit.info("Fetch data from redis spend time {} ms.", System.currentTimeMillis() - start); } } @Override @ScriptBridge public String hkeys(String key) { long start = System.currentTimeMillis(); Set set = jedis.hkeys(key); LogKit.info("Fetch data from redis spend time {} ms.", System.currentTimeMillis() - start); return object2JSONString(set); } @Override @ScriptBridge public String hmget(String key, String... fields) { long start = System.currentTimeMillis(); List list = jedis.hmget(key, fields); LogKit.info("Fetch data from redis spend time {} ms.", System.currentTimeMillis() - start); return object2JSONString(list); } @Override @ScriptBridge public String hgetAll(String key) { long start = System.currentTimeMillis(); Map map = jedis.hgetAll(key); LogKit.info("Fetch data from redis spend time {} ms.", System.currentTimeMillis() - start); return object2JSONString(map); } @Override @ScriptBridge public String keys(String pattern) { long start = System.currentTimeMillis(); Set set = jedis.keys(pattern); LogKit.info("Fetch data from redis spend time {} ms.", System.currentTimeMillis() - start); return object2JSONString(set); } @Override @ScriptBridge public String lrange(String key, long start, long end) { long start0 = System.currentTimeMillis(); List list = jedis.lrange(key, start, end); LogKit.info("Fetch data from redis spend time {} ms.", System.currentTimeMillis() - start0); return object2JSONString(list); } @Override @ScriptBridge public String smembers(String key) { long start = System.currentTimeMillis(); Set set = jedis.smembers(key); LogKit.info("Fetch data from redis spend time {} ms.", System.currentTimeMillis() - start); return object2JSONString(set); } /** * 将集合输出为JSON格式的字符串,便于JS和Java互传数据 * * @param collection 集合 * @return 字符串 */ String object2JSONString(Collection collection) { return JSONFactory.createJSON(collection).toString(); } /** * 将集合输出为JSON格式的字符串,便于JS和Java互传数据 * * @param map 集合 * @return 字符串 */ String object2JSONString(Map map) { Map newMap = new TreeMap(); newMap.putAll(map); return JSONFactory.createJSON(JSON.OBJECT, newMap).toString(); } }