session用membercache还是redis存储?

JZ_7975 2015-08-14 04:16:04
准备用membercache或者是redis存储session
但是听说membercache的命中率不高
对这块不了解,想听听大家的看法。
...全文
252 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
疯狂熊猫人 2015-08-17
  • 打赏
  • 举报
回复
redis用起来还是很好的,速度与memcache不相上下,支持主从(最新版本支持集群),自带监视器(sentinel)可自动实现主从切换。并且redis他是单线程的,可以保证命令执行的先后顺序,这个特性在某些场景中是非常实用的。另外redis的命令真的非常简单,基本都是一看就会,学习成功比较低。使用的时候建议对java客户端提供的redis操作进行封装,这样使用起来就会比较方便,也不容易出错,方便统一管理。
public <T>T exec(Cmd<T> cmd){
		try(Jedis jedis = masterPool.getResource()){
			return cmd.exec(jedis);
		}
	}
public class SetCmd extends BaseCmd<String> {
	public enum NXXX{
		NX,XX
	}
	private int time;
	private String nxxx;
	private int state = 0b00;

	public SetCmd(String key, Object value) {
		super(key);
		this.value = value;
	}

	public SetCmd ex(int seconds){
		time = seconds;
		state = state|0b01;
		return this;
	}
	
	public SetCmd nxxx(NXXX nxxx){
		if(nxxx!=null){
			state = state | 0b10;
			this.nxxx = nxxx.toString();
		}
		return this;
	}

	@Override
	public String exec(Jedis jedis) {
		switch (state) {
			case 0b01:
				return jedis.setex(key, time, String.valueOf(value));
			case 0b10:
				return jedis.set(key, String.valueOf(value), nxxx);
			case 0b11:
				return jedis.set(key, String.valueOf(value), nxxx, "EX", time);
			default:
				return jedis.set(key, String.valueOf(value));
		}
	}
	
	@Override
	public Pipeline setPipeCmd(Pipeline pipeline) {
		switch (state) {
			case 0b01:
				pipeline.setex(key, time, String.valueOf(value));
			case 0b10:
				pipeline.set(key, String.valueOf(value), nxxx);
			case 0b11:
				pipeline.set(key, String.valueOf(value), nxxx, "EX", time);
			default:
				pipeline.set(key, String.valueOf(value));
		}
		return pipeline;
	}
}
Inhibitory 2015-08-17
  • 打赏
  • 举报
回复
Redis 的 Java 库有个不好的地方,Key是字符串,Value就必须是字符串,其实我比较喜欢 Key 是字符串,Value 可以是字符数组
  • 打赏
  • 举报
回复
看到过用membercache存储session 看看

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧