个人知乎 ##基础五-redis

来源:互联网 发布:nginx tomcat 配置ssl 编辑:程序博客网 时间:2024/05/01 14:04

个人知乎

基础五-redis

功能

pv:立即增加浏览数点赞排行榜验证码缓存异步队列判题队列地理位置功能

基础知识

key-value数据库,缓存数据库内容安装配置文件<denpendencies>RDB:记录结果AOF:记录执行过程

基本使用

//连接6379端口,9号数据库Jedis jedis = new Jedis("redis://localhost:6379/9");jedis.flushDB();//map,key-value//加入jedis.set("hello","world");//取出jedis.get("hello");//对key改名jedis.rename("hello","newhello");//设置超时时间15s,验证码功能jedis.setex("hello2",15,"world");//做数值运算jedis.set("pv",100);jedis.incr("pv");jedis.incrby("pv",5);jedis.decrby("pv",2);

list

//-------------------list适用于最新列表,关注列表//顺序结构,key-value(list)String listName="list";jedis.del(listName);jedis.lpush(listName,"a1");jedis.rpush(listName,"a2");jedis.lrange(listName,0,12);jedis.llen(listName);jedis.lpop(listName);jedis.lindex(listName,3);jedis.linsert(listName,.before/after,"a1","xx");

hashmap

//----------map:不定属性,对象//key-value(hashmap)String userKey="userxx";jedis.hset(userKey,"name","jim");jedis.hset(userKey,"age","12");jedis.hget(userKey,"name");jedis.hdel(userKey,"age");jedis.hgetAll(userKey);jedis.hexists(userKey,"email");jedis.hkeys(userKey);jedis.hvals(userKey);//不存在才添加jedis.hsetnx(userKey,"name","sdfd0");

set

//--------------Set:无序概念,点踩点赞,抽奖,已读,抽奖//set,key-value(set)String likeKey1="commentLike1";String likeKey2="commentLike2";jedis.sadd(likeKey1,"1");jedis.sadd(likeKey1,"11");jedis.sadd(likeKey2,"1");jedis.sadd(likeKey2,"111");//所有jedis.smembers(likeKey1);//集合运算jedis.sunion(likeKey1,likeKey2);jedis.sdiff(likeKey1,likeKey2);jedis.sinter(likeKey1,likeKey2);jedis.sismember(likeKey1,"16");jedis.srem(likeKey1,"1");jedis.smove(likeKey1,likeKey2,"11");//统计集合元素jedis.scard(likeKey1);

优先队列

//-----------排行榜//优先队列key-value(<score-element>)String rankKey="rankKey";jedis.zadd(rankKey,15,"jim");jedis.zadd(rankKey,100,"Ben");jedis.zadd(rankKey,90,"Lee");jedis.zadd(rankKey,75,"Lucy");jedis.zcard(rankKey);//统计double在区间内个数jedis.zcount(rankKey,61,100);//给出Lucy的值jedis.zscore(rankKey,"Lucy");//跟新值,不存在的key以0为默认值jedis.zincrby(rankKey,2,"Lucy");//按从低到高排序,取0到100位jedis.zrange(rankKey,0,100);//按从高到地排序,取1到3jedis.zrevrange(rankKey,1,3);//遍历for(Tuple tuple:jedis.zrangeByScoreWithScores(    rankKey,61,100)){        tuple.getElement();        tuple.getScore();    }jedis.zrank(rankKey,"Lucy");jedis.zrevrank(rankKey,"Lucy");//score一样时,按照element字典序排序jedis.zranklex(rankKey,"ben")

redis数据库连接池

JedisPool pool=new JedisPool();for(int i=0;i<100;++i){    Jedis j=pool.getResource();    //默认8个连接,不close就会耗尽    j.close();}

对象序列化

JSONObject.toJSONString(user);jedis.set("user1",JSONObject.toJSONString(user));String value =jedis.get("user1");User user2=JSON.parseObject(value,User.class);