jedis切片(集群)非切片(单机)实例

package testRedis;
 
import java.util.ArrayList;
 
import java.util.Iterator;
 
import java.util.List;
 
import java.util.Set;
 
import redis.clients.jedis.Jedis;
 
import redis.clients.jedis.JedisPool;
 
import redis.clients.jedis.JedisPoolConfig;
 
import redis.clients.jedis.JedisShardInfo;
 
import redis.clients.jedis.ShardedJedis;
 
import redis.clients.jedis.ShardedJedisPool;
 
import redis.clients.jedis.SortingParams;
 
import redis.clients.util.Pool;
 
 
 
/**
 
*@author 
 
*2015-4-19
 
*/
 
public class RedisClient {
 
// 获取数据库的连接,非切片客户端连接
 
private Jedis jedis;
 
// 非切片连接池
 
private JedisPool jedisPool;
 
//切片客户端
 
private ShardedJedis shardedJedis;
 
// 切片连接池
 
private ShardedJedisPool shardedJedisPool;
 
 
 
// 构造函数
 
public RedisClient(){
 
// 初始化连接池
 
initialPool();
 
// 初始化切片连接池
 
initialShardedPool();
 
// 从切片池中获取切片实例
 
shardedJedis=shardedJedisPool.getResource();
 
// 从非切片池中获取实例
 
jedis=jedisPool.getResource();
 
}
 
 
 
// 初始化非切片池
 
private void initialPool(){
 
// 池的配置
 
JedisPoolConfig config= new JedisPoolConfig();
 
// 最大连接数
 
config.setMaxActive(20);
 
// 最大空闲连接数
 
config.setMaxIdle(5);
 
//获取连接时的最大等待毫秒数
 
config.setMaxWait(10001);
 
//在空闲时检查有效性, 默认false
 
config.setTestOnBorrow(false);
 
jedisPool= new JedisPool(config,"127.0.0.1",6379);
 
}
 
 
 
// 初始化切片池
 
private void initialShardedPool(){
 
// 池基本配置
 
JedisPoolConfig config= new JedisPoolConfig();
 
// 最大连接个数
 
config.setMaxActive(20);
 
// 最大空闲连接数
 
config.setMaxIdle(2);
 
//获取连接时的最大等待毫秒数
 
config.setMaxWait(10001);
 
// 在空闲时检查有效性,默认false
 
config.setTestOnBorrow(false);
 
//slave 连接, 这里实现了集群的功能,配置多个redis服务实现请求的分配进行负载均衡
 
List shards= newArrayList();
 
shards.add(newJedisShardInfo("192.168.0.106",6379,"master"));
 
shards.add(newJedisShardInfo("192.168.0.100",6379,"master"));
 
// 构造池
 
shardedJedisPool= newShardedJedisPool(config,shards);
 
 
 
}
 
 
 
public void show (){
 
KeyOperate();
 
StringOperate();
 
ListOperate();
 
// 释放连接
 
jedisPool.returnResource(jedis);
 
// 释放连接
 
shardedJedisPool.returnResource(shardedJedis);
 
 
 
}
 
//
 
private void KeyOperate(){
 
System.out.println("清空所有数据库"+jedis.flushDB());
 
// 判断key是否存在
 
System.out.println("判断key999建是否存在"+shardedJedis.exists("key999"));
 
System.out.println("新曾key001value001键值对"+shardedJedis.set("key001","value001"));
 
System.out.println("判断key001是否存在"+shardedJedis.exists("key001"));
 
//输出系统中所有的key
 
System.out.println("新增key002value002"+shardedJedis.set("key002","value002"));
 
System.out.println("系统中的所有键如下:");
 
Set keys=jedis.keys("*");
 
Iterator it= keys.iterator();
 
while(it.hasNext()){
 
String key= it.next();
 
System.out.println(key);
 
 
 
}
 
 
 
// 删除某个key 如果不从在则忽略
 
System.out.println("系统中删除key002"+jedis.del("key002"));
 
System.out.println("判断是否存在"+jedis.exists("key002"));
 
// 设置key 001 的过期时间
 
System.out.println("设置key001的过期时间为五秒"+jedis.expire("key001",5));
 
try{
 
Thread.sleep(2000);
 
}catch(Exception e){
 
e.printStackTrace();
 
}
 
 
 
// 查看某个key的剩余时间 单位秒 不存在或永久 返回-1
 
System.out.println("查看key001的剩余时间"+jedis.ttl("key001"));
 
//移除某个key的剩余时间
 
System.out.println("删除key001的剩余时间"+jedis.persist("key001"));
 
//移除后在看时间
 
System.out.println("剩余时间"+jedis.ttl("key001"));
 
 
 
// 查看key 所存储的值的类型
 
System.out.println("查看key所存储的值的类型"+jedis.type("key001"));
 
 
 
}
 
 
 
/**
 
* String 类型
 
*/
 
private void StringOperate(){
 
System.out.println("+=+++++++String+++++++===");
 
//清空数据
 
System.out.println("清空数据库中的数据"+jedis.flushDB());
 
System.out.println("========曾==========");
 
jedis.set("key001","value001");
 
jedis.set("key002","value002");
 
jedis.set("key003","value003");
 
System.out.println("以新增3个键值对 如下:");
 
System.out.println(jedis.get("key001"));
 
System.out.println(jedis.get("key002"));
 
System.out.println(jedis.get("key003"));
 
System.out.println("=======删除======");
 
System.out.println("删除key003键值对"+jedis.del("key003"));
 
System.out.println("获取key003建对应的值"+jedis.get("key003"));
 
System.out.println("======改=====");
 
// 直接覆盖原来的值
 
System.out.println("直接覆盖原来的值"+jedis.set("key001","value001-update"));
 
System.out.println("获取key001 对应的新值 "+jedis.get("key001"));
 
// 如果有的话 则不修改如果没有的话则要修改
 
System.out.println("没有添加,有则无效"+jedis.setnx("key001","value001 a new "));
 
//获取这个值看看那
 
System.out.println("修改了之后应该是value001 a new 获取这个值"+jedis.get("key001"));
 
// 直接覆盖原来的数据
 
System.out.println("在ke0y002原值后面追加"+jedis.append("key002","appendString"));
 
System.out.println("获取key002的新值"+jedis.get("key002"));
 
System.out.println("======曾,删查多个=======");
 
/**
 
* mset mget 同时新增 修改 查询多个键值对
 
*/
 
// 一次性新增多个值
 
System.out.println(jedis.mset("key201","value201","key202","value202","key203","value203","key204","value204"));
 
//一次获得多个建的值
 
System.out.println(jedis.mget("key201","key202","key203","key204"));
 
// 一次性删除多个值
 
System.out.println("一次性删除多个值"+jedis.del(newString[]{"key201","key202","key203","key204"}));
 
// jedis 中有的方法在 shardedJedis 中也可以直接使用,下面测试一些前面没有使用过的方法
 
System.out.println("=========STRING2====");
 
System.out.println("清空所有数据库"+jedis.flushDB());
 
System.out.println("原先 key301不存在的时候 新增301"+shardedJedis.setnx("key301","value301"));
 
System.out.println("原先key302 不存在的时候新增 302"+shardedJedis.setnx("key302","value302"));
 
System.out.println("原先key302存在时试着新增 302"+shardedJedis.setnx("key302","value302"));
 
// 获取key3... 的值
 
System.out.println("获取key301的值"+shardedJedis.get("key301"));
 
System.out.println("获取key302的值"+shardedJedis.get("key302"));
 
// 超期 有效键值对被删除
 
System.out.println("=======");
 
System.out.println("key303的有效时间为2"+shardedJedis.setex("key303", 2,"key303-2second"));
 
System.out.println("获取key303 的值"+shardedJedis.get("key303"));
 
try{
 
Thread.sleep(3000);
 
 
 
}catch(Exception e){
 
 
 
}
 
System.out.println("过期后的key303的值"+shardedJedis.get("key303"));
 
//获取原值,更新为新值一步完成
 
System.out.println("key302 的原值"+shardedJedis.getSet("key302","value302-aftergetset"));
 
System.out.println("key302 的新值"+shardedJedis.get("key302"));
 
// 获取某个key 的子串
 
System.out.println("获取key302对应值中的子串"+shardedJedis.getrange("key302", 2, 4));
 
}
 
 
 
/**
 
* list 类型
 
*/
 
private void ListOperate(){
 
System.out.println("=======list======11");
 
// 清空数据
 
System.out.println("清空数据库中的所有数据"+jedis.flushDB());
 
// 添加数据
 
System.out.println("====增====");
 
shardedJedis.lpush("stringlists","vectory");
 
shardedJedis.lpush("stringlists","arraulist");
 
shardedJedis.lpush("stringlists","vectory");
 
shardedJedis.lpush("stringlists","vectory");
 
shardedJedis.lpush("stringlists","linkedlist");
 
shardedJedis.lpush("stringlists","maplist");
 
shardedJedis.lpush("stringlists","hashlist");
 
shardedJedis.lpush("numberlist","1");
 
shardedJedis.lpush("numberlist","2");
 
shardedJedis.lpush("numberlist","3");
 
shardedJedis.lpush("numberlist","4");
 
shardedJedis.lpush("numberlist","5");
 
shardedJedis.lpush("numberlist","6");
 
//获取stringlist 的所有数据
 
System.out.println("所有数据stringlists"+shardedJedis.lrange("stringlists",0, -1));
 
Liststringlist=shardedJedis.lrange("stringlists", 0, -1);
 
System.out.println("stringlist 的长度"+stringlist.size());
 
// 获取 numberlist 的所有数据
 
System.out.println("获取numberlist的所有数据"+shardedJedis.lrange("numberlist", 0,-1));
 
List numberlist=shardedJedis.lrange("numberlist", 0, -1);
 
System.out.println("numberlist 的长度"+numberlist.size());
 
// 元素的删除
 
System.out.println("元素的删除");
 
// 删除列表指定的值,第二个参数为删除个数(如果有重复)后添加的先删除,类似栈
 
System.out.println("删除指定的元素"+shardedJedis.lrem("stringlists", 2,"vectory"));
 
System.out.println("删除指定的元素在获取所有元素"+shardedJedis.lrange("stringlists",0,-1));
 
// 删除制定区间以外的数据
 
System.out.println("删除指定区间以外的数据"+shardedJedis.ltrim("stringlists", 0, 3));
 
//获取删除指定元素外的的数据
 
System.out.println("删除指定区间的数据"+shardedJedis.lrange("stringlists", 0,-1));
 
//列表元素出栈
 
System.out.println("列表元素出栈"+shardedJedis.lpop("stringlists"));
 
// 出栈后数据的获取
 
System.out.println("出栈后获取所有元素"+shardedJedis.lrange("stringlists", 0,-1));
 
 
 
// 修改列表中制定下标的值:
 
System.out.println("修改列表中指定下标的值"+shardedJedis.lset("stringlists", 0,"hello world"));
 
// 获取修改制定下标的值
 
System.out.println("修改后的值"+shardedJedis.lrange("stringlists", 0,-1));
 
 
 
// 查询 某个key的 数组的长度
 
System.out.println("获取长度shardedJedis的"+shardedJedis.llen("stringlists"));
 
//查询 某个key的 数组的长度
 
System.out.println("获取长度numberlist的"+shardedJedis.llen("numberlist"));
 
// 排序 list中存字符串时必须指定参数为alpha,如果不使用sortingparams,而是直接使用sort("list")
 
SortingParams sortingParameters= newSortingParams();
 
sortingParameters.alpha();
 
sortingParameters.limit(0,3);
 
// 排序后的结果
 
System.out.println("返回排序后的结果stringlists"+shardedJedis.sort("stringlists",sortingParameters));
 
System.out.println("返回排序后的结果 numberlist"+shardedJedis.sort("numberlist"));
 
 
 
// 获取子串 -1 代表倒数第一个 -2 代表倒数第二个
 
System.out.println("子串第二个开始到结束"+shardedJedis.lrange("stringlists", 1,-1));
 
// 获取 第二个到倒数第二个
 
System.out.println("获取子串"+shardedJedis.lrange("stringlists", 1, -2));
 
//获取制定下标的数据
 
System.out.println("获取stringlist 的指定的下标的值"+shardedJedis.lindex("stringlists",2));
 
}
 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值