Bootstrap

java redis实现fifo_如何利用redis实现缓存

redis是典型的非关系型数据库,支持key-value,hash,list,set等各种数据结构。那么如何利用redis实现缓存呢?

接口定义

首先,我们需要定义一个数据包装类,用来包装缓存的值,为什么需要包装类呢?举个例子,假设我们缓存了一个null值,那么缓存返回的也是null值,使用者怎么知道这个null是说缓存中没数据还是缓存的就是null?

CacheWrapper类:public class CacheWrapper implements Serializable {

private E value;

private boolean exist = false;

public CacheWrapper() {

}

public CacheWrapper(E e) {

this.value = e;

}

public CacheWrapper(E value, boolean exist) {

this.value = value;

this.exist = exist;

}

public E getValue() {

return value;

}

public void setValue(E value) {

this.value = value;

}

public boolean isExist() {

return exist;

}

public void setExist(boolean exist) {

this.exist = exist;

}

@Override

public boolean equals(Object o) {

if (this == o) return true;

if (!(o instanceof CacheWrapper)) return false;

CacheWrapper> that = (CacheWrapper>) o;

if (isExist() != that.isExist()) return false;

return getValue() != null ? getValue().equals(that.getValue()) : that.getValue() == null;

}

@Override

public int hashCode() {

int result = getValue() != null ? getValue().hashCode() : 0;

result = 31 * result + (isExist() ? 1 : 0);

return result;

}

}

接下来,我们需要定一个接口,方便未来扩展。

Cac

;