Redis_簡單的redis 緩存

在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);    
    
    }
相關文章
相關標籤/搜索