求解 为什么jedis 连不上jedis操作redis集群群

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&Redis实战之Redis + Jedis - 集群架构 - 运维网 -
Powered by Discuz! Archiver
Redis实战之Redis + Jedis
用Memcached,对于缓存对象大小有要求,单个对象不得大于1MB,且不支持复杂的数据类型,譬如SET
等。基于这些限制,有必要考虑Redis!
相关链接:
Redis实战之Redis + Jedis
Redis实战之征服 Redis + Jedis + Spring (一)
Redis实战之征服 Redis + Jedis + Spring (二)
Redis实战之征服 Redis + Jedis + Spring (三)
言归正传,目前Redis大概有3中基于Java语言的Client:
这里只说Jedis,因为它是官方提供的唯一Redis Client For Java Provider!
一、简单使用Jedis
需要Jedis就从Maven获取吧!
Maven Pom.xml
&dependency&
& & &groupId&redis.clients&/groupId&
& & &artifactId&jedis&/artifactId&
& & &version&2.1.0&/version&
& & &type&jar&/type&
& & &scope&compile&/scope&
&/dependency&
view plaincopy
&dependency&
& & &groupId&redis.clients&/groupId&
& & &artifactId&jedis&/artifactId&
& & &version&2.1.0&/version&
& & &type&jar&/type&
& & &scope&compile&/scope&
&/dependency&
如果只是简单使用Jedis,以下这么几行代码足够:
Jedis jedis = new Jedis(&10.11.20.140&);
String keys = &name&;
jedis.del(keys);
jedis.set(keys, &snowolf&);
String value = jedis.get(keys);
System.out.println(value);
view plaincopy
Jedis jedis = new Jedis(&10.11.20.140&);
String keys = &name&;
jedis.del(keys);
jedis.set(keys, &snowolf&);
String value = jedis.get(keys);
System.out.println(value);
二、池化使用Jedis
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
redis.ip=10.11.20.140
redis.port=6379
在静态代码段中完成初始化:
private static JedisP
& & ResourceBundle bundle = ResourceBundle.getBundle(&redis&);
& & if (bundle == null) {
& && &throw new IllegalArgumentException(
& && && && && & & 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&)));
view plaincopy
private static JedisP
& & ResourceBundle bundle = ResourceBundle.getBundle(&redis&);
& & if (bundle == null) {
& && &throw new IllegalArgumentException(
& && && && && & & 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&)));
然后,修改前面那段jedis操作Redis
// 从池中获取一个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);
view plaincopy
// 从池中获取一个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实例:
// 从池中获取一个Jedis对象
Jedis jedis = pool.getResource();
view plaincopy
// 从池中获取一个Jedis对象
Jedis jedis = pool.getResource();
切记,最后使用后,释放Jedis对象:
// 释放对象池
pool.returnResource(jedis);
view plaincopy
// 释放对象池
pool.returnResource(jedis);
三、一致性哈希
Memcached完全基于分布式集群,而Redis是Master-Slave,如果想把Reids,做成集群模式,无外乎多做几套Master-Slave,每套Master-Slave完成各自的容灾处理,通过Client工具,完成一致性哈希。
PS:Memcached是在Server端完成Sharding,Redis只能依靠各个Client做Sharding。可能会在Redis 3.0系列支持Server端Sharding。
保留前面的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&JedisShardInfo& list = new LinkedList&JedisShardInfo&();
list.add(jedisShardInfo1);
list.add(jedisShardInfo2);
view plaincopy
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&JedisShardInfo& list = new LinkedList&JedisShardInfo&();
list.add(jedisShardInfo1);
list.add(jedisShardInfo2);
初始化ShardedJedisPool代替JedisPool:
ShardedJedisPool pool = new ShardedJedisPool(config, list);
view plaincopy
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);
view plaincopy
// 从池中获取一个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);
四、Spring封装参考
Ok,完成上述代码足够完成简单任务,如果有必要,可以用Spring封装初始化:
&context:property-placeholder location=&classpath:redis.properties& /&
& & id=&jedisPoolConfig&
& & class=&redis.clients.jedis.JedisPoolConfig&
& & &property
& && &name=&maxActive&
& && &value=&${redis.pool.maxActive}& /&
& & &property
& && &name=&maxIdle&
& && &value=&${redis.pool.maxIdle}& /&
& & &property
& && &name=&maxWait&
& && &value=&${redis.pool.maxWait}& /&
& & &property
& && &name=&testOnBorrow&
& && &value=&${redis.pool.testOnBorrow}& /&
& & id=&shardedJedisPool&
& & class=&redis.clients.jedis.ShardedJedisPool&
& & &constructor-arg
& && &index=&0&
& && &ref=&jedisPoolConfig& /&
& & &constructor-arg index=&1&&
& && &&list&
& && && && &&bean class=&redis.clients.jedis.JedisShardInfo&&
& && && && && & &constructor-arg
& && && && && && &index=&0&
& && && && && && &value=&${redis1.ip}& /&
& && && && && & &constructor-arg
& && && && && && &index=&1&
& && && && && && &value=&${redis.port}&
& && && && && && &type=&int& /&
& && && && &&/bean&
& && && && &&bean class=&redis.clients.jedis.JedisShardInfo&&
& && && && && & &constructor-arg
& && && && && && &index=&0&
& && && && && && &value=&${redis2.ip}& /&
& && && && && & &constructor-arg
& && && && && && &index=&1&
& && && && && && &value=&${redis.port}&
& && && && && && &type=&int& /&
& && && && &&/bean&
& && &&/list&
& & &/constructor-arg&
view plaincopy
&context:property-placeholder location=&classpath:redis.properties& /&
& & id=&jedisPoolConfig&
& & class=&redis.clients.jedis.JedisPoolConfig&
& & &property
& && &name=&maxActive&
& && &value=&${redis.pool.maxActive}& /&
& & &property
& && &name=&maxIdle&
& && &value=&${redis.pool.maxIdle}& /&
& & &property
& && &name=&maxWait&
& && &value=&${redis.pool.maxWait}& /&
& & &property
& && &name=&testOnBorrow&
& && &value=&${redis.pool.testOnBorrow}& /&
& & id=&shardedJedisPool&
& & class=&redis.clients.jedis.ShardedJedisPool&
& & &constructor-arg
& && &index=&0&
& && &ref=&jedisPoolConfig& /&
& & &constructor-arg index=&1&&
& && &&list&
& && && && &&bean class=&redis.clients.jedis.JedisShardInfo&&
& && && && && & &constructor-arg
& && && && && && &index=&0&
& && && && && && &value=&${redis1.ip}& /&
& && && && && & &constructor-arg
& && && && && && &index=&1&
& && && && && && &value=&${redis.port}&
& && && && && && &type=&int& /&
& && && && &&/bean&
& && && && &&bean class=&redis.clients.jedis.JedisShardInfo&&
& && && && && & &constructor-arg
& && && && && && &index=&0&
& && && && && && &value=&${redis2.ip}& /&
& && && && && & &constructor-arg
& && && && && && &index=&1&
& && && && && && &value=&${redis.port}&
& && && && && && &type=&int& /&
& && && && &&/bean&
& && &&/list&
& & &/constructor-arg&
代码可以更简洁一些:
private ApplicationC
private ShardedJedisP
public void before() throws Exception {
& & app = new ClassPathXmlApplicationContext(&applicationContext.xml&);
& & pool = (ShardedJedisPool) app.getBean(&shardedJedisPool&);
public void test() {
& & // 从池中获取一个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);
& & assertEquals(value, v);
view plaincopy
private ApplicationC
private ShardedJedisP
public void before() throws Exception {
& & app = new ClassPathXmlApplicationContext(&applicationContext.xml&);
& & pool = (ShardedJedisPool) app.getBean(&shardedJedisPool&);
public void test() {
& & // 从池中获取一个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);
& & assertEquals(value, v);
当然,Spring提供了对于Redis的专门支持:spring-data-redis,以后有机会再深入研究。
走自己的路,让别人打车去吧。
生我之前谁是我,生我之后我是谁?
学海无涯,回头是岸!
床上运动也可以减肥的,你们都不知道吗?
站的更高,尿的更远。
xinxuaw231
看帖回帖是美德!:lol
查看完整版本:推荐这篇日记的豆列
······Jedis 对 redis 的操作详解(上)_ImportNew-爱微帮
&& &&& Jedis 对 redis 的操作详解(…
(点击上方公众号,可快速关注)来源:朱小厮链接:http://blog.csdn.net/u/article/details/通过前一篇《redis的简单使用》的简单介绍,本篇主要阐述Jedis对redis的五大类型的操作:字符串、列表、散列、集合、有序集合。JedisUtil这里的测试用例采用junit4进行运行,准备代码如下:private&static&final&String ipAddr =&&10.10.195.112&;&&&&private&static&final&int&port =&6379;&&&&private&static&Jedis jedis=&&&&&&@BeforeClass&&&&public&static&void&init()&&&&{&&&&&&&&jedis = JedisUtil.getInstance().getJedis(ipAddr, port);&&&&}&&&&&@AfterClass&&&&public&static&void&close()&&&&{&&&&&&&&JedisUtil.getInstance().closeJedis(jedis,ipAddr, port);&&&&}其中JedisUtil是对jedis做的简单封装,代码如下:import&org.apache.log4j.L&import&java.util.HashMimport&java.util.M&import&redis.clients.jedis.Jimport&redis.clients.jedis.JedisPimport&redis.clients.jedis.JedisPoolC&public&class&JedisUtil{&&&&private&Logger logger = Logger.getLogger(this.getClass().getName());&&&&&private&JedisUtil(){}&&&&&private&static&class&RedisUtilHolder{&&&&&&&&private&static&final&JedisUtil instance =&new&JedisUtil();&&&&}&&&&&public&static&JedisUtil getInstance(){&&&&&&&&return&RedisUtilHolder.&&&&}&&&&&private&static&Map&String,JedisPool& maps =&new&HashMap&String,JedisPool&();&&&&&private&static&JedisPool getPool(String ip,&int&port){&&&&&&&&String key = ip+&:&+&&&&&&&&JedisPool pool =&&&&&&&&&if(!maps.containsKey(key))&&&&&&&&{&&&&&&&&&&&&JedisPoolConfig config =&new&JedisPoolConfig();&&&&&&&&&&&&config.setMaxActive(RedisConfig.MAX_ACTIVE);&&&&&&&&&&&&config.setMaxIdle(RedisConfig.MAX_IDLE);&&&&&&&&&&&&config.setMaxWait(RedisConfig.MAX_WAIT);&&&&&&&&&&&&config.setTestOnBorrow(true);&&&&&&&&&&&&config.setTestOnReturn(true);&&&&&&&&&&&&&pool =&new&JedisPool(config,ip,port,RedisConfig.TIMEOUT);&&&&&&&&&&&&maps.put(key, pool);&&&&&&&&}&&&&&&&&else&&&&&&&&{&&&&&&&&&&&&pool = maps.get(key);&&&&&&&&}&&&&&&&&return&&&&&&&&&&&&}&&&&&public&Jedis getJedis(String ip,&int&port)&&&&{&&&&&&&&Jedis jedis =&&&&&&&&&int&count =&0;&&&&&&&&do&&&&&&&&{&&&&&&&&&&&&try&&&&&&&&&&&&{&&&&&&&&&&&&&&&&jedis = getPool(ip,port).getResource();&&&&&&&&&&&&}&&&&&&&&&&&&catch&(Exception e)&&&&&&&&&&&&{&&&&&&&&&&&&&&&&logger.error(&get redis master1 failed!&,e);&&&&&&&&&&&&&&&&getPool(ip,port).returnBrokenResource(jedis);&&&&&&&&&&&&}&&&&&&&&}&&&&&&&&while(jedis ==&null&&& count&RedisConfig.RETRY_NUM);&&&&&&&&return&&&&&}&&&&&public&void&closeJedis(Jedis jedis, String ip,&int&port){&&&&&&&&if(jedis !=&null)&&&&&&&&{&&&&&&&&&&&&getPool(ip,port).returnResource(jedis);&&&&&&&&}&&&&}}&public&class&RedisConfig{&&&&//可用连接实例的最大数目,默认值为8;&&&&//如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。&&&&public&static&int&MAX_ACTIVE =&1024;&&&&&//控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。&&&&public&static&int&MAX_IDLE =&200;&&&&&//等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException;&&&&public&static&int&MAX_WAIT =&10000;&&&&&public&static&int&TIMEOUT =&10000;&&&&&public&static&int&RETRY_NUM =&5;}键操作@Test&public&void&testKey()&throws&InterruptedException&&&{&&&&&&&System.out.println(&清空数据:&+jedis.flushDB());&&&&&&&System.out.println(&判断某个键是否存在:&+jedis.exists(&username&));&&&&&&&System.out.println(&新增&&#39;username&#39;,&#39;zzh&#39;&的键值对:&+jedis.set(&username&,&&zzh&));&&&&&&&System.out.println(jedis.exists(&name&));&&&&&&&System.out.println(&新增&&#39;password&#39;,&#39;password&#39;&的键值对:&+jedis.set(&password&,&&password&));&&&&&&&System.out.print(&系统中所有的键如下:&);&&&&&&&Set&String& keys = jedis.keys(&*&);&&&&&&&System.out.println(keys);&&&&&&&System.out.println(&删除键password:&+jedis.del(&password&));&&&&&&&System.out.println(&判断键password是否存在:&+jedis.exists(&password&));&&&&&&&System.out.println(&设置键username的过期时间为5s:&+jedis.expire(&username&,&5));&&&&&&&TimeUnit.SECONDS.sleep(2);&&&&&&&System.out.println(&查看键username的剩余生存时间:&+jedis.ttl(&username&));&&&&&&&System.out.println(&移除键username的生存时间:&+jedis.persist(&username&));&&&&&&&System.out.println(&查看键username的剩余生存时间:&+jedis.ttl(&username&));&&&&&&&System.out.println(&查看键username所存储的值的类型:&+jedis.type(&username&));&&&}输出结果:清空数据:OK判断某个键是否存在:false新增&&#39;username&#39;,&#39;zzh&#39;&的键值对:OKfalse新增&&#39;password&#39;,&#39;password&#39;&的键值对:OK系统中所有的键如下:[username, password]删除键password:1判断键password是否存在:false设置键username的过期时间为5s:1查看键username的剩余生存时间:3移除键username的生存时间:1查看键username的剩余生存时间:-1查看键username所存储的值的类型:string字符串操作在Redis里面,字符串可以存储三种类型的值:字节串(byte string)整数浮点数字节串@Test&public&void&testString()&throws&InterruptedException&&{&&&&&&jedis.flushDB();&&&&&&System.out.println(&===========增加数据===========&);&&&&&&System.out.println(jedis.set(&key1&,&value1&));&&&&&&System.out.println(jedis.set(&key2&,&value2&));&&&&&&System.out.println(jedis.set(&key3&,&&value3&));&&&&&&System.out.println(&删除键key2:&+jedis.del(&key2&));&&&&&&System.out.println(&获取键key2:&+jedis.get(&key2&));&&&&&&System.out.println(&修改key1:&+jedis.set(&key1&,&&value1Changed&));&&&&&&System.out.println(&获取key1的值:&+jedis.get(&key1&));&&&&&&System.out.println(&在key3后面加入值:&+jedis.append(&key3&,&&End&));&&&&&&System.out.println(&key3的值:&+jedis.get(&key3&));&&&&&&System.out.println(&增加多个键值对:&+jedis.mset(&key01&,&value01&,&key02&,&value02&,&key03&,&value03&));&&&&&&System.out.println(&获取多个键值对:&+jedis.mget(&key01&,&key02&,&key03&));&&&&&&System.out.println(&获取多个键值对:&+jedis.mget(&key01&,&key02&,&key03&,&key04&));&&&&&&System.out.println(&删除多个键值对:&+jedis.del(new&String[]{&key01&,&key02&}));&&&&&&System.out.println(&获取多个键值对:&+jedis.mget(&key01&,&key02&,&key03&));&&&&&&&jedis.flushDB();&&&&&&System.out.println(&===========新增键值对防止覆盖原先值==============&);&&&&&&System.out.println(jedis.setnx(&key1&,&&value1&));&&&&&&System.out.println(jedis.setnx(&key2&,&&value2&));&&&&&&System.out.println(jedis.setnx(&key2&,&&value2-new&));&&&&&&System.out.println(jedis.get(&key1&));&&&&&&System.out.println(jedis.get(&key2&));&&&&&&&System.out.println(&===========新增键值对并设置有效时间=============&);&&&&&&System.out.println(jedis.setex(&key3&,&2,&&value3&));&&&&&&System.out.println(jedis.get(&key3&));&&&&&&TimeUnit.SECONDS.sleep(3);&&&&&&System.out.println(jedis.get(&key3&));&&&&&&&System.out.println(&===========获取原值,更新为新值==========&);//GETSET is an atomic set this value and return the old value command.&&&&&&System.out.println(jedis.getSet(&key2&,&&key2GetSet&));&&&&&&System.out.println(jedis.get(&key2&));&&&&&&&System.out.println(&获得key2的值的字串:&+jedis.getrange(&key2&,&2,&4));&&}输出结果:===========增加数据===========OKOKOK删除键key2:1获取键key2:null修改key1:OK获取key1的值:value1Changed在key3后面加入值:9key3的值:value3End增加多个键值对:OK获取多个键值对:[value01, value02, value03]获取多个键值对:[value01, value02, value03,&null]删除多个键值对:2获取多个键值对:[null,&null, value03]===========新增键值对防止覆盖原先值==============110value1value2===========新增键值对并设置有效时间=============OKvalue3null===========获取原值,更新为新值==========value2key2GetSet获得key2的值的字串:y2Gmemcached和redis同样有append的操作,但是memcached有prepend的操作,redis中并没有。整数和浮点数@Test&public&void&testNumber()&&&{&&&&&&&jedis.flushDB();&&&&&&&jedis.set(&key1&,&&1&);&&&&&&&jedis.set(&key2&,&&2&);&&&&&&&jedis.set(&key3&,&&2.3&);&&&&&&&System.out.println(&key1的值:&+jedis.get(&key1&));&&&&&&&System.out.println(&key2的值:&+jedis.get(&key2&));&&&&&&&System.out.println(&key1的值加1:&+jedis.incr(&key1&));&&&&&&&System.out.println(&获取key1的值:&+jedis.get(&key1&));&&&&&&&System.out.println(&key2的值减1:&+jedis.decr(&key2&));&&&&&&&System.out.println(&获取key2的值:&+jedis.get(&key2&));&&&&&&&System.out.println(&将key1的值加上整数5:&+jedis.incrBy(&key1&,&5));&&&&&&&System.out.println(&获取key1的值:&+jedis.get(&key1&));&&&&&&&System.out.println(&将key2的值减去整数5:&+jedis.decrBy(&key2&,&5));&&&&&&&System.out.println(&获取key2的值:&+jedis.get(&key2&));&&&}输出结果:key1的值:1key2的值:2key1的值加1:2获取key1的值:2key2的值减1:1获取key2的值:1将key1的值加上整数5:7获取key1的值:7将key2的值减去整数5:-4获取key2的值:-4在redis2.6或以上版本中有这个命令:incrbyfloat,即将键存储的值加上浮点数amount,jedis-2.1.0中不支持这一操作。接下文【今日微信公号推荐↓】更多推荐请看《》其中推荐了包括技术、设计、极客和IT相亲相关的热门公众号。技术涵盖:Python、Web前端、Java、安卓、iOS、PHP、C/C++、.NET、Linux、数据库、运维、大数据、算法、IT职场等。点击《》,发现精彩!
点击展开全文
悄悄告诉你
更多同类文章
还可知道有多少人阅读过此篇文章哦
阅读原文和更多同类文章
可微信扫描右侧二维码关注后
还可知道有多少人阅读过此篇文章哦
伯乐在线旗下账号,专注Java技术分享,包括Java基础技术、进阶技能、架构设计和Java技术领域动态等。
您的【关注和订阅】是作者不断前行的动力
本站文章来自网友的提交收录,如需删除可进入
删除,或发送邮件到 bang@ 联系我们,
(C)2014&&版权所有&&&|&&&
京ICP备号-2&&&&京公网安备34}

我要回帖

更多关于 jedis操作redis集群 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信