一,安装配置
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这里的封装相当给力,可以借鉴之
https://github.com/springside/springside4/blob/master/modules/extension/src/main/java/org/springside/modules/nosql/redis/JedisTemplate.java
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; }