一,安装配置
1. 新版本可以make install的; 也提供了utils目录,一键加入开机启动脚本
2.设置了密码之后,脚本无法stop进程!!必须连上redis-cli, 输入shutdown
$ wget http://download.redis.io/releases/redis-2.6.16.tar.gz
$ tar xzf redis- 2.6.16.tar.gz //这里假设解压缩到/usr/local/redis
$ cd redis- 2.6.16
$ make
$ make install
$ cd utils
$./install_server
/etc/init.d/redis_6379 start
二、接口命令--中文的哦。。
http://www.redisdoc.com/en/latest/
三、比较完整,详细的介绍
https://github.com/springside/springside4/wiki/Redis
How to take advantage of Redis just adding it to your stack
http://oldblog.antirez.com/post/take-advantage-of-redis-adding-it-to-your-stack.html
四、连接池及jedis
附件送一个maven的代码
五、经验
1. 简单的使用,无需用到pool;
2. 如果用到pool,请一定关注下面2点:
a.)每次从pool获取资源后,一定要try-finally 释放; 不手动释放的话,瞬间死的很惨;
b.) 一定要搞懂returnBrokenResource 和returnResource 的区别。
池对象是复用的,比如先setxxx,一旦返回OK之前超时断开,下一次取到这个对象的get就会获取到"OK" "PONG" 这种奇怪的返回。
而JedisConnectionException被设计成runtime异常,虽说不用强制捕获,但是不捕获怎么能处理掉brokenresource呢?
3. 从安全的角度来看,,安装第一件事情就是先换个端口把。嗯,15位串的密码也是必备。
/**
* 关闭连接
* @param jedis 连接对象
* @param isOK 对象是否ok,正常设为true;捕获到JedisConnectionException异常的时候传入false
*/
public void closeConnection(Jedis jedis, boolean isOK) {
if (null != jedis) {
if(!isOK){
log.error("returnBrokenResource jedis="+ new Gson().toJson(jedis));;
jedisPool.returnBrokenResource(jedis);
}else{
jedisPool.returnResource(jedis);
}
}
}
try {
connection.setex(key, 1800,xxxx)));
} catch (JedisConnectionException e) {
//return broken here
}
springside这里的封装相当给力,可以借鉴之
4.关于序列化: 我这里用的gson; 其实用来替代mysql之后,数据模型的可升级性必将成为一个问题。
{ //main
A a = new A();
a.b = 250;
String gs = new Gson().toJson(a);
B b = new Gson().fromJson(gs, B.class);
System.out.println(b);
}
}
class A{
Integer a;
Integer b;
}
class B{ //可扩展新字段
Integer a;
Integer b;
Integer c;
}