前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java操作Redis数据库

Java操作Redis数据库

作者头像
暴躁的程序猿
发布2022-03-24 15:44:21
3740
发布2022-03-24 15:44:21
举报
文章被收录于专栏:阿飞的学习记录

对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();
    }

结果图

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/04/04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 对redis数据库 数据各类型的操作
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档