8.Jedis的使用

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],欢迎哦^_^

猜你喜欢

转载自blog.csdn.net/lzb348110175/article/details/88239510