我们都知道redis支持5种数据结构,Jedis是redis官方首选的Java客户端开发包,大家常用的数据存储方式是把对象转化为JSON字符串,然后通过set存储,取出数据的时候,先通过get取出JSON字符串,然后转化为对象,如果碰到复杂的对象就比较头疼,下面封装了个通用RedisUtil工具,可以实现像Memcache一样快速的存取对象,不用担心转化的问题。
实现原理其实就是数据存储之前自己手动序列化key、value,这里使用的是java自带的序列化工具,如果对性能要求比较高的话,推荐大家使用protostuff,号称性能最强的序列化工具。然后通过set(final byte[] key, final byte[] value)方法存储(Jedis继承了BinaryJedis)。由于redis是单线程的,序列化写在服务端的好处是可以增加redis的性能,增加吞吐量,直接上代码:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.dayspass.datacenter.common.util.SerializableUtil;
import com.dayspass.datacenter.common.util.StringUtils;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public final class RedisUtil {
private static Logger logger = LoggerFactory.getLogger(RedisUtil.class);
//Redis服务器IP
private static String ADDR = "127.0.0.1";
//Redis的端口号
private static int PORT = 6379;
//访问密码
private static String AUTH = "admin";
//可用连接实例的最大数目,默认值为8;
//如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例&#x