1.如何连接Redis
1.直接连接
Jedis jedis = new Jedis("192.168.204.211","6379");
如有密码:jedis.auth("111111");
然后就可以对Redis进行操作了
2.连接池连接(连接池切记:关闭资源)
//Jedis相关配置信息
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(500);
config.setMaxIdle(5);
config.setMaxWaitMillis(1000 * 100);
config.setTestOnBorrow(true);
//redis连接池连接成功
JedisPool pool = new JedisPool(config, "192.168.204.211", 6379,超时时间,"111111");
//获取连接池中的一个连接
Jedis jedis = pool.getResource();
然后就可以对Redis进行操作了
2.Redis JavaAPI的使用
官网命令参考:http://doc.redisfans.com/index.html
①String操作
jedis.set(String key,String value);
jedis.get(String key);
jedis.incr(String key);递增+1
jedis.decr(String key);递减-1
jedis.incrBy(String key,Long num);递增+num
jedis.decrBy(String key,Long num);递减-num
jedis.mset(String key,String value,String key,......)
jedis.mget(String key,String key,String key,......); 返回一个List<String>
②List操作
1.jedis.lpush(String key,String value,String value......);列表从左边开始push
eg:jedis.lpush("大侠","A大侠","B大侠","C大侠","D大侠");
2.jedis.lrange(String key,int start,int end); 返回列表中的数据,List<String>
eg:start表示开始,0为第一个元素,1为第二个元素
end表示结束,-1标识最后一个元素,-2标识倒数第二个元素
List<String> values = jedis.lrange("大侠",0,-1);
结果:---->D大侠,C大侠,B大侠,A大侠
3.jedis.rpush(String key,String value,String value......);列表从右边开始push
4.jedis.linseart(String key,BinaryClient.LIST_POSITION.AFTER/BEFORE,String pivot, String value)
注释:将value插入到pivot后面或者前面(AFTER或BEFORE)
5.jedis.lpop(String key); 将列表最左面第一个值移除,并返回该删除的值
6.jedis.rpop(String key);将列表最右面第一个值移除,并返回该删除的值
7.jedis.ltrim(Stirng key,int start,int end);将不在start至end范围内的数据删除
eg:游坦之 阿紫 虚竹 段誉 乔峰 王语嫣 井中月(0为第一个)
String result = jedis.ltrim(key,2,5);
结果:----> 虚竹 段誉 乔峰 王语嫣
③Set操作 (Set集合特点:无序,不重复)
jedis.sadd(String key,String value,String value,String value......);向名称为key的set中添加元素
jedis.smembers(String key); 获取该Set中的所有值
jedis.scard(String key); 统计该Set中共有多少个元素,汇总操作
jedis.sismember(String key,String member);判断成员member是否在该Set中,返回boolean
jedis.smembers(String key);返回集合key中的所有成员
jedis.sinter(String key,String key);返回两个集合的交集
jedis.sunion(String key,String key);返回两个集合的并集
jedis.sdiff(String key,String key);返回两个集合的差集
jedis.sdiffstore(String key1,String key2,String key3);返回key2和key3两个集合的差集,存入key1的集合中
jedis.sinterstore(String key1,String key2,String key3);返回key2和key3两个集合的交集,存入key1的集合中
④Map操作
1.初始化Map,并保存到redis
jedis.hset(String key,String field,String value);
eg:jedis.hset("daxia", "姓名", "不为人知");
jedis.hset("daxia", "年龄", "18");
jedis.hset("daxia", "技能", "杀人于无形");
2.从redis获取Map
Map<String,String> map = jedis.hgetAll(String key);
3.获取Map中所有的字段信息field
Set<String> fields = jedis.hkey(String key);
4.获取Map中所有的数值value
List<String> values = jedis.hvals(String key);
5.获取某个字段的值
String age = jedis.hget(String key,String field);
eg:String age = jedis.hget("daxia","年龄");
6.将Map中某个field的值增加xxx
jedis.hincrBy(String key,String field,String num);
eg:jedis.hincrBy(“daxia","年龄",10);//为key为daxia的年龄字段的值+10
7.将Map中某个字段删除
jedis.hdel(String key,String field);
......参见http://doc.redisfans.com/index.html
⑤SortedSet操作(有序集合)
1.jedis.zadd(String key,double score,String member);
向名称为key的set中添加一条SortedSet数据
2.jedis.zcard(String key);
统计该SortedSet中共有多少个元素,汇总操作
3.jedis.zcount(String key,double min,double max);
返回有续集SortedSet中,score值在min和max之间的个数
4.jedis.zincrBy(String key,dobule increment,String member);
为有续集key中的member成员的score值增加increment,返回增加后的结果如果要减少,则increment为负数即可
5.jedis.zrange(String key,long start,long end);
获取SortedSet中在start和end之间的数据(从0开始)
备注:start表示开始,0为第一个元素,1为第二个元素
end表示结束,-1标识最后一个元素,-2标识倒数第二个元素
6.jedis.zrangeByScore(String key,double min,double max)
根据score来获取在min至max范围内的数据
7.jedis.zrank(String key,String member);
返回当前member在该有续集中的顺序(如果分数一样都是第一名,下一个就是第二名),返回值为Long型
8.jedis.zrem(String key,String member,String member......);
移除SortedSet中member成员(member为可变参数)
9.jedis.zremrangeByRank(String key,long start,long end);
根据rank移除start至end范围内成员
10.jedis.zremrangeByScore(String key,double start,double end);
根据score移除start至end范围内成员
11.jedis.zrevrange(String key,double start,double end);
根据score移除start至end范围内成员(从大到小)
jedis.zrevrangeByScore(String key,double start,double end);
根据score移除start至end范围内成员(从大到小)
jedis.zrevrank(String key,String member);
返回当前member在该有续集中的顺序(如果分数一样都是第一名,下一个就是第二名)
返回值为Long型(从大到小)
这三个与zrange,zrangeByScore,zrank一样,只是结果顺序相反
12.jedis.zscore(String key,String member);
返回有续集中member的score分数
⑥Jedis保存对象操作
1.序列化保存对象(序列化方法网上查找)
Person person = new Person("刘德华","17");
jedis.set(key.getBytes(),person对象序列化后的值); --->保存对象到redis成功
byte[] objByte = jedis.get(key.getBytes());//获取到redis中对象数据
反序列化后,经过强转等操作,获取到该对象,通过[对象.属性]获取相应值
2.Json保存对象
Person person = new Person("刘德华","17");
jedis.set(String key,new Gson().toJson(person)); --->将对象转成json保存到redis
String objJson = jedis.get(String key);//获取到redis中对象数据
Person person = new Gson().fromJson(String objJson,Person.class);
通过[对象.属性]获取相应值
⑦过期时间操作
1.jedis.setex(String key,int seconds,String value);
设置key,seconds秒后自动过期
2.jedis.expire(String key,int seconds);
对已存在字段设置过期时间
⑧其他操作
1.jedis.exists(String key);
判断某个key是否存在
2.jedis.del(String key);
删除某个key
3.jedis.auth(String passwd);
设置密码
---->如有疑问,请发表评论,或者联系博主:[email protected],欢迎哦^_^