zoukankan      html  css  js  c++  java
  • redis(jedis的简单入门)

    redis下载地址(下载最新的如果总是下载失败,可以尝试下载老一点的版本,个人推荐msi安装方式可以安装的时候就把配置搞定)
    https://github.com/MicrosoftArchive/redis/releases

    在idea创建的maven项目中添加依赖

            <dependency>
                <groupId>redis.clients</groupId>
                <artifactId>jedis</artifactId>
                <version>2.9.0</version>
                <type>jar</type>
                <scope>compile</scope>
            </dependency>
    
    

    然后创建一个 jedisDemo 类,来介绍redis简单的命令,更多命令参见官网:
    https://redis.io/commands

    import redis.clients.jedis.Jedis;
    
    /**
     * Redis 数据库里面的每个键值对(key-value pair)都是由对象(object)组成的:
     *其中, 数据库键总是一个字符串对象(string object);
     *而数据库键的值则可以是字符串对象、 列表对象(list object)、 哈希对象(hash object)、 集合对象(set object)、 有序集合对象(sorted set object)这五种对象中的其中一种。
     */
    public class JedisDemo {
        //辅助函数
        public static void print(int index,Object obj){
            System.out.println(String.format("%d,%s",index,obj.toString()));
        }
        public static void main(String[] args) {
            //new Jedis() 不传参数,默认6379的端口。这里面的9是选择第9个库(自带16个库)
            Jedis jedis = new Jedis("redis://localhost:6379/9");
            jedis.flushDB();//清除当前Jedis所有的key
            // get set 命令
            jedis.set("hello","world");//添加一个kv对
            print(1,jedis.get("hello"));//通过键取出值和Map一个道理
            jedis.setex("timeout",1800,"验证码已失效,请重新获取验证码");//设置键值对的时效,常用语验证码
            //jedis 简单的数值操作: 加 减(ps:可用于页面浏览数的更新)
            jedis.set("pv","100");
            jedis.incr("pv");//pv ->101
            jedis.incrBy("pv",5);//pv ->106
            jedis.decrBy("pv",2);//pv ->104
            print(2,jedis.get("pv"));
            //jedis 中的list使用
            String list = "list";
            jedis.del(list);
            for(int i=0;i<10;++i){
                jedis.lpush(list,"a"+String.valueOf(i));//lpush向list中添加元素,lrange查出来0-3的的元素
            }
            print(4,jedis.lrange(list,0,3));// result: 4,[a9, a8, a7, a6]
            print(4,jedis.llen(list));//计算列表的长度      4,10
            print(4,jedis.lpop(list));//类似于弹栈,将a9    4,a9
            print(4,jedis.lrange(list,2,6));//  4,[a6, a5, a4, a3, a2]
            print(4,jedis.lindex(list,3));// 4,a5
            print(4,jedis.linsert(list, BinaryClient.LIST_POSITION.AFTER,"a4","after"));
            print(4,jedis.linsert(list, BinaryClient.LIST_POSITION.BEFORE,"a4","before"));
            print(4,jedis.lrange(list,0,21));//4,[a8, a7, a6, a5, before, a4, after, a3, a2, a1, a0]
    
              // hash 可以很方便的为改变象属性
            String hash = "hash";
            jedis.hset(hash,"name","tom");
            jedis.hset(hash,"age","18");
            jedis.hset(hash,"gender","man");
            jedis.hset(hash,"phone","15233333333");
            print(5,jedis.hget(hash,"name"));//tom
            print(5,jedis.hgetAll(hash));//5,{name=tom, gender=man, phone=15233333333, age=18}
            jedis.hdel(hash,"phone");//删除 phone 属性
            print(5,jedis.hexists(hash,"phone"));//5,false 查询phone属性是否存在
            print(5,jedis.hkeys("hash"));//5,[name, gender, age]  获取hash所有的key
            print(5,jedis.hvals("hash"));//5,[tom, 18, man]  获取hash所有的values
            jedis.hsetnx(hash,"name","xx");//如果属性name不存在则创建name属性列否则不再创建
            jedis.hsetnx(hash,"school","njut");
            print(5,jedis.hgetAll(hash));//5,{name=tom, gender=man, school=njut, age=18}
    
            //set
            String set1 = "set1";
            String set2 = "set2";
            for(int i=0;i<10;++i){
                jedis.sadd(set1,String.valueOf(i));
                jedis.sadd(set2,String.valueOf(i*i));
            }
            print(6,jedis.smembers(set1));//6,[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
            print(6,jedis.smembers(set2));//6,[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
            //集合 并集
            print(6,jedis.sunion(set1,set2));//6,[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 25, 36, 49, 64, 81]
            //集合 差集
            print(6,jedis.sdiff(set1,set2));//6,[8, 2, 3, 5, 6, 7]
            //集合 交集
            print(6,jedis.sinter(set1,set2));
            //判断某元素是否是集合一员
            print(6,jedis.sismember(set1,"1"));//true
            //删除集合中一员
            jedis.srem(set1,"5");
            print(6,jedis.smembers(set1));//6,[0, 1, 2, 3, 4, 6, 7, 8, 9]
            jedis.smove(set2,set1,"25");//将set2中的25移动到set1中
            print(6,jedis.smembers(set1));//6,[0, 1, 2, 3, 4, 6, 7, 8, 9, 25]
            print(6,jedis.smembers(set2));//6,[0, 1, 4, 9, 16, 36, 49, 64, 81]
            //求集合成员的总和, 和count的功能一致
            print(6,jedis.scard(set2));//6,9 
    
    
        }
    }
    
    
  • 相关阅读:
    PHP服务器端API原理及示例讲解(接口开发)
    Nginx的启动、停止与重启
    还是,Stairway To Haven
    NetBeans 时事通讯(刊号 # 42 Jan 20, 2009)
    Eve Backstory
    将默认的Netbeans中文版设置为英文界面/如何将Netbeans 6.5设置为英文界面
    Eve Backstory
    将默认的Netbeans中文版设置为英文界面/如何将Netbeans 6.5设置为英文界面
    领域驱动设计和开发实战
    领域驱动设计和开发实战
  • 原文地址:https://www.cnblogs.com/shuoli/p/7436026.html
Copyright © 2011-2022 走看看