一、相关jar包主要用到的是jedis的核心包,笔者用到的是2.1.0版;另根据“池”的应用等还需要用到相关jar包。下图是笔者建立的简单的jedis测试project图:jar包
一、相关jar包
主要用到的是jedis的核心包,笔者用到的是2.1.0版;另根据“池”的应用等还需要用到相关jar包。下图是笔者建立的简单的jedis测试project图:

jar包的文档可参考:
二、简单是Jedis实例
在引入相关jar包后,只要new一个Jedis对象,就能做redis相关操作了。以下是一个简单的jedis实例:
package com.pptv.redis;import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set;import redis.clients.jedis.Jedis;public class JedisDemo {public void test(){Jedis redis = new Jedis (“172.0.0.1”,6379);//连接redisredis.auth(“redis”);//验证密码,如果需要验证的话// STRING 操作//SET key value将字符串值value关联到key。redis.set(“name”, “wangjun1”);redis.set(“id”, “123456”);redis.set(“address”, “guangzhou”);//SETEX key seconds value将值value关联到key,并将key的生存时间设为seconds(以秒为单位)。redis.setex(“foo”, 5, “haha”);//MSET key value [key value …]同时设置一个或多个key-value对。redis.mset(“haha”,”111″,”xixi”,”222″);//redis.flushAll();清空所有的keySystem.out.println(redis.dbSize());//dbSize是多少个key的个数//APPEND key value如果key已经存在并且是一个字符串,APPEND命令将value追加到key原来的值之后。redis.append(“foo”, “00”);//如果key已经存在并且是一个字符串,APPEND命令将value追加到key原来的值之后。//GET key 返回key所关联的字符串值redis.get(“foo”);//MGET key [key …] 返回所有(一个或多个)给定key的值List list = redis.mget(“haha”,”xixi”);for(int i=0;i三、JedisPool应用
Jedis使用commons-pool完成池化实现。
先做个配置文件(properties文件):
#最大分配的对象数redis.pool.maxActive=1024#最大能够保持idel状态的对象数redis.pool.maxIdle=200#当池内没有返回对象时,最大等待时间redis.pool.maxWait=1000#当调用borrow Object方法时,是否进行有效性检查redis.pool.testOnBorrow=true#当调用return Object方法时,是否进行有效性检查redis.pool.testOnReturn=true#IPredis.ip=172.0.0.1#Portredis.port=6379
jedisPool的相关详细配置可参考:
在静态代码段中完成初始化:
private static JedisPool pool;static {ResourceBundle bundle = ResourceBundle.getBundle(“redis”);if (bundle == null) {throw new IllegalArgumentException(“[redis.properties] is not found!”);}JedisPoolConfig config = new JedisPoolConfig();config.setMaxActive(Integer.valueOf(bundle.getString(“redis.pool.maxActive”)));config.setMaxIdle(Integer.valueOf(bundle.getString(“redis.pool.maxIdle”)));config.setMaxWait(Long.valueOf(bundle.getString(“redis.pool.maxWait”)));config.setTestOnBorrow(Boolean.valueOf(bundle.getString(“redis.pool.testOnBorrow”)));config.setTestOnReturn(Boolean.valueOf(bundle.getString(“redis.pool.testOnReturn”)));pool = new JedisPool(config, bundle.getString(“redis.ip”),Integer.valueOf(bundle.getString(“redis.port”)));}
然后修改#2的简单实例,修改为Jedis从pool中获得:
// 从池中获取一个Jedis对象Jedis jedis = pool.getResource();String keys = “name”;// 删数据jedis.del(keys);// 存数据jedis.set(keys, “snowolf”);// 取数据String value = jedis.get(keys);System.out.println(value);// 释放对象池pool.returnResource(jedis);
四、Jedis分布式(Sharding/shared一致性哈希)
PHP 网络编程技术与实例(曹衍龙)
PHP网络编程技术详解由浅入深,全面、系统地介绍了PHP开发技术,并提供了大量实例,供读者实战演练。另外,笔者专门为本书录制了相应的配套教学视频,以帮助读者更好地学习本书内容。这些视频和书中的实例源代码一起收录于配书光盘中。本书共分4篇。第1篇是PHP准备篇,介绍了PHP的优势、开发环境及安装;第2篇是PHP基础篇,介绍了PHP中的常量与变量、运算符与表达式、流程控制以及函数;第3篇是进阶篇,介绍
386 查看详情
Memcached完全基于分布式集群,而Redis是Master-Slave,如果想把Reids,做成集群模式,无外乎多做几套Master-Slave,每套Master-Slave完成各自的容灾处理,通过Client工具,完成一致性哈希。(PS:Memcached是在Server端完成Sharding,Redis只能依靠各个Client做Sharding。可能会在Redis 3.0系列支持Server端Sharding。)
shared一致性哈希采用以下方案:
sharded采用的hash算法:MD5 和 MurmurHash两种;默认采用64位的MurmurHash算法;有兴趣的可以研究下,,MurmurHash是一种高效,低碰撞的hash算法;参考地址:
https://sites.google.com/site/murmurhash/
保留前面的JedisPoolConfig,新增两个Redis的IP(redis1.ip,redis2.ip),完成两个JedisShardInfo实例,并将其丢进List中:
JedisShardInfo jedisShardInfo1 = new JedisShardInfo(bundle.getString(“redis1.ip”), Integer.valueOf(bundle.getString(“redis.port”)));JedisShardInfo jedisShardInfo2 = new JedisShardInfo(bundle.getString(“redis2.ip”), Integer.valueOf(bundle.getString(“redis.port”)));List list = new LinkedList();list.add(jedisShardInfo1);list.add(jedisShardInfo2);
初始化ShardedJedisPool代替JedisPool:
ShardedJedisPool pool = new ShardedJedisPool(config, list);
改由ShardedJedis,获取Jedis对象:
// 从池中获取一个Jedis对象ShardedJedis jedis = pool.getResource();String keys = “name”;String value = “snowolf”;// 删数据jedis.del(keys);// 存数据jedis.set(keys, value);// 取数据String v = jedis.get(keys);System.out.println(v);// 释放对象池pool.returnResource(jedis);
通过以上方式,向redis进行set操作的key-value,会通过hash而均匀的分配到pool里的redis机器中。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1083694.html
微信扫一扫
支付宝扫一扫