在pom.xml加入如下內容: //高速序列化 存儲對象 速度是java 實現io 序列化的10倍左右 存儲較大的對象時 內置緩存 java
<dependency> <groupId>com.dyuproject.protostuff</groupId> <artifactId>protostuff-core</artifactId> <version>1.0.8</version> </dependency>
//redis 客戶端 jedis 也可使用別的 推薦redis
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.7.3</version> </dependency>
<dependency> <groupId>com.dyuproject.protostuff</groupId> <artifactId>protostuff-runtime</artifactId> <version>1.0.8</version>
//業務層獲取jedis 鏈接池數據庫
public RedisDao(String ip,int port) { // TODO Auto-generated constructor stub jedisPool= new JedisPool(ip,port); }
//redis 就是key value 數據庫 傳入key值獲取你所要的對象緩存
//entityclass就是你要序列化的類code
//經過key值獲取redis中的緩存對象xml
public T test(String key){ RuntimeSchema<T> schema = RuntimeSchema.createFrom(entityclass); Jedis jedis = jedisPool.getResource();//獲取jedis 對象 byte [] bytes= jedis.get(key.getBytes()); T a =schema.newMessage(); if(bytes!=null){ ProtobufIOUtil.mergeFrom(bytes, a, schema) ; jedis.close(); return a; } return null; }
//若是該key值中沒有對應的對象對象
//訪問數據 返回的對象存入redis中ip
//LinkedBuffer redis 中緩衝的對象get
public void putT(T t){ RuntimeSchema<T> schema = RuntimeSchema.createFrom(entityclass); //OBJECT -->序列化-->存入redis Jedis jedis = jedisPool.getResource(); //緩衝對象 byte [] bytes=ProtobufIOUtil.toByteArray(t, schema, LinkedBuffer.allocate(LinkedBuffer.DEFAULT_BUFFER_SIZE)); int timeout = 60 * 60;//緩存的時長 秒爲單位 String key = null; jedis.setex(key.getBytes(), timeout, bytes); }