设为首页 收藏本站
查看: 1123|回复: 0

[经验分享] Redis客户端使用

[复制链接]

尚未签到

发表于 2015-7-22 09:16:00 | 显示全部楼层 |阅读模式
http://wenku.baidu.com/view/6ccd650af12d2af90242e63d.html

一、下载jedis 代码

  jedis 代码地址:https://github.com/xetorthio/jedis
  再次感受到开源的强大。呵呵,大家有时间可以看看源码。


二、项目中如何使用Jedis使用

  现在大家都喜欢用maven作为项目管理利器,那我只说明一下Maven如何使用jedis,只需要添加以下依赖就可以。

   
redis.clients
jedis
2.1.0

  
  OK, 用maven管理jar包依赖真的很方便。建议大家都采用maven管理项目。


三、建立一个简单的连接

  



public class JedisUtil {
public static Jedis createJedis() {
Jedis jedis = new Jedis("127.0.0.1");
return jedis;
}
public static Jedis createJedis(String host, int port) {
Jedis jedis = new Jedis(host, port);
return jedis;
}
public static Jedis createJedis(String host, int port, String passwrod) {
Jedis jedis = new Jedis(host, port);
if (!StringUtils.isNotBlank(passwrod))
jedis.auth(passwrod);
return jedis;
}
}

创建一个简单Jedis对象就是这样,告诉它的IP地址和端口号就可以,如果redis有密码,那需要在建立连接时,需要调用auth方法设置密码。
当然,简单连接不适合真实的环境使用,需要有连接池支持 。


四、建立Jedis连接池
  

  创建连接jedis 连接池,jedis 提供JedisPool对象,使用比较方便。jedis pool 是基于apache common pool 实现。



package cn.opensv.example.redis;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class JedisPoolUtils {
private static JedisPool pool;
/**
     * 建立连接池 真实环境,一般把配置参数缺抽取出来。
     *
     */
private static void createJedisPool() {
// 建立连接池配置参数
JedisPoolConfig config = new JedisPoolConfig();
// 设置最大连接数
config.setMaxActive(100);
// 设置最大阻塞时间,记住是毫秒数milliseconds
config.setMaxWait(1000);
// 设置空间连接
config.setMaxIdle(10);
// 创建连接池
pool = new JedisPool(config, "127.0.0.1", 6379);
}
/**
     * 在多线程环境同步初始化
     */
private static synchronized void poolInit() {
if (pool == null)
createJedisPool();
}
/**
     * 获取一个jedis 对象
     *
     * @return
     */
public static Jedis getJedis() {
if (pool == null)
poolInit();
return pool.getResource();
}
/**
     * 归还一个连接
     *
     * @param jedis
     */
public static void returnRes(Jedis jedis) {
pool.returnResource(jedis);
}
}


五、Jedis 实现分片

  Jedis分片采用Hash算法和基于的Key模式匹配。Jedis定义一个Hash接口,如果觉得自带的不爽,可以自己实现一个Hash算法。Jedis自带的Hash的算法是MurmurHash 2.0 。
  MurmurHash算法:高运算性能,低碰撞率,由Austin Appleby创建于2008年,现已应用到Hadoop、libstdc++、nginx、libmemcached等开源系统。2011年 Appleby被Google雇佣,随后Google推出其变种的CityHash算法。
  官方网站:https://sites.google.com/site/murmurhash/
  MurmurHash算法,自称超级快的hash算法,是FNV的4-5倍。
  

   
/**
     * 创建分片对象
     * @return
     */
public static ShardedJedis createShardJedis() {
//建立服务器列表
List shards = new ArrayList();
//添加第一台服务器信息
JedisShardInfo si = new JedisShardInfo("localhost", 6379);
si.setPassword("123");
shards.add(si);
//添加第二台服务器信息
si = new JedisShardInfo("localhost", 6399);
si.setPassword("123");
shards.add(si);
//建立分片连接对象
ShardedJedis jedis = new ShardedJedis(shards);        
//建立分片连接对象,并指定Hash算法
//ShardedJedis jedis = new ShardedJedis(shards,selfHash);
return jedis;
}

  分片也可以支持连接池,具体如下:

    private static void createPool() {
List shards = new ArrayList();
JedisShardInfo si = new JedisShardInfo("localhost", 6379);
si.setPassword("123");
shards.add(si);
si = new JedisShardInfo("localhost", 6399);
si.setPassword("123");
shards.add(si);
pool = new ShardedJedisPool(new JedisPoolConfig(), shards);
}
  其它与普通的连接池没有区别。
  除Jedis是redis的Java客户端实现,还有其他的一些开源库,如:Spring Redis Data ,不过功能还不够强大。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-89326-1-1.html 上篇帖子: Linux下安装Redis服务 下篇帖子: 关于Redis的常识(推荐)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表