Java操作Redis数据库

2022-03-24 15:44:21 浏览数 (1)

对redis数据库 数据各类型的操作

不了解Redis数据库的大家可以参考前两节

Redis基础 点击此处

Redis基本操作 点击此处

此文章是对上节操作的补充和细化 我写了详细的注释 大家可以参考的看一下

导入依赖

代码语言:javascript复制
<!--	redis依赖	-->
		<dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
			<version>2.8.0</version>
		</dependency>

方法

代码语言:javascript复制
  public static void print(int index,Object obj){
        //输出的工具类
        System.out.println(String.format("%d,%s",index ,obj.toString()));
    }

    public static void main(String[] args) {
        Jedis jedis = new Jedis();//默认连接本地
        jedis.flushAll();//数据库数据全部删除
        jedis.set("a","b");//存一个String类型的数据
//        jedis.get("a");
        print(1,jedis.get("a"));
        //更改key值
        jedis.rename("a","hello");
        print(1,jedis.get("hello"));
        jedis.setex("hello2",15,"world");//添加一个新的string串  设置15秒的过期时间   过了15秒会自动删除

        //假设PV  是一个网页有多少人访问
        jedis.set("pv","100");
        jedis.incr("pv");//增加一个
        print(2,jedis.get("pv"));
        jedis.incrBy("pv",5);//一次增加五个
        print(2,jedis.get("pv"));


        /**
         * 操作list
         */
        String listName="listA";
        for(int i=0;i<10;  i){
            //加入十条
            jedis.lpush(listName,"a" String.valueOf(i));
        }
        //取出 0-12条
        print(3,jedis.lrange(listName,0,12));
        //查看一共多少条
        print(4,jedis.llen(listName));
        //弹出之后就会减少一条
        print(5,jedis.lpop(listName));
        //查看
        print(7,jedis.lrange(listName,0,12));
        //查看第三个数据
        print(8,jedis.lindex(listName,3));
        //插入数据     参数:插入那条key    插入方式(插入前面还是后面)   插在那条数据前面或者后面  插入的值value
        //插入可以做什么   来访记录
        //前插
        print(9,jedis.linsert(listName, BinaryClient.LIST_POSITION.AFTER,"a4","Aa"));
        //后插
        print(10,jedis.linsert(listName, BinaryClient.LIST_POSITION.BEFORE,"a4","aA"));
         //查看数据
        print(11,jedis.lrange(listName,0,12));

        //操作hash类型数据
        //可以用来添加不确定有多少属性的时候   比如一个人考完试要添加成绩    被录取了要新添加一个学校
        String userKey="user11";//代表12这个用户
        jedis.hset(userKey,"name","tom");//添加一个数据  这个人是user 名字是tom
        jedis.hset(userKey,"age","12");//年龄
        jedis.hset(userKey,"phone","13836978520");//添加联系方式
        //取出    取出这个用户的姓名
        print(12,jedis.hget(userKey,"name"));
        //取出这个用户的所有属性
        print(13,jedis.hgetAll(userKey));
        //删掉一个字段   指定哪个用户的 哪个字段
        jedis.hdel(userKey,"phone");
        print(14,jedis.hgetAll(userKey));
        //获取 所有的key
        print(15,jedis.hkeys(userKey));
        //获取所有的values
        print(16,jedis.hvals(userKey));
        //判断是否存在某个字段
        print(17,jedis.hexists(userKey,"phone"));
        print(18,jedis.hexists(userKey,"age"));
        //如果字段不存在的话设置  如果存在就不设置了
        jedis.hsetnx(userKey,"school","zg");
        //因为name这个字段已经存在了  所以没有设置
        jedis.hsetnx(userKey,"name","cat");
        print(19,jedis.hgetAll(userKey));

        /**
         * 操作set集合
         */
          String likeKeys1="newsLike1";
          String likeKeys2="newsLike2";
          for (int i=0;i<10 ;  i){
              jedis.sadd(likeKeys1,String.valueOf(i));
              //都是偶数
              jedis.sadd(likeKeys2,String.valueOf(i*2));
          }
          //打印出来
          print(20,jedis.smembers(likeKeys1));
          print(21,jedis.smembers(likeKeys2));
          //求交    就是求两个集合的相同属性    例如:我们聊天软件中的共同好友功能
          print(22,jedis.sinter(likeKeys1,likeKeys2));
          //求并
          print(23,jedis.sunion(likeKeys1,likeKeys2));
          //求不同  一有二没有的
          print(24,jedis.sdiff(likeKeys1,likeKeys2));
          //判断0是否存在
          print(25,jedis.sismember(likeKeys1,"9"));
          //删除第一个里面的9
          jedis.srem(likeKeys1,"9");
          print(26,jedis.smembers(likeKeys1));
          //判断元素有多少个
          print(27,jedis.scard(likeKeys1));
          //把 14 从二集合移动到一集合里面
          jedis.smove(likeKeys2,likeKeys1,"14");
          print(28,jedis.scard(likeKeys1));
          //查看一集合的所有元素
          print(29,jedis.smembers(likeKeys1));


        /**
         * 操作sortedset类型
         *    该类型很常用  通常用作排行榜
         */
         String rankKey="rankKey";
         //每个存储的 我们都需要为这个数据赋上一个 分值
        // 设置tom的分值为15
         jedis.zadd(rankKey,15,"tom");
         jedis.zadd(rankKey,65,"cat");
         jedis.zadd(rankKey,70,"mini");
         jedis.zadd(rankKey,85,"jik");
         jedis.zadd(rankKey,90,"lucy");
         //查看一共有多少个值
         print(30,jedis.zcard(rankKey));
         //查看区间内有多少人
         //查看60-100区间内有多少人
         print(31,jedis.zcount(rankKey,60,100));
         //查看某一个的分值       查看jik的分值
         print(32,jedis.zscore(rankKey,"jik"));
         //把cat的分值提高五分
         jedis.zincrby(rankKey,5,"cat");
         print(33,jedis.zscore(rankKey,"cat"));
         //给一个不存在得人提分
         jedis.zincrby(rankKey,5,"cot");
         //并且查看这个人的分值
         print(34,jedis.zscore(rankKey,"cot"));
         print(35,jedis.zcount(rankKey,0,100));
         //获取排名的后三位  从小到大排序
         print(36,jedis.zrange(rankKey,0,2));
         //获取排名前三位    从大到小排序
         print(37,jedis.zrevrange(rankKey,0,2));

         //把所有的数据打印出来        0-100的所有元素和分值
       for(Tuple tuple:jedis.zrangeByScoreWithScores(rankKey,0,100)){
           //打印元素和分值  从低到高
           print(38,tuple.getElement() ":" String.valueOf(tuple.getScore()));
       }
        //获取某一个人的排名   从小到大 从零开始
        print(39,jedis.zrank(rankKey,"cat"));
       //获取某一个人的排名   从大到小  从零开始
       print(40,jedis.zrevrank(rankKey,"cat"));


         //关闭连接
        jedis.close();
    }

结果图

0 人点赞