康猫100天-第八天-redis之jedis学习-20181202

1.  jedis其实就是java链接redis的驱动。

2.  启动redis服务端,可以代码进行测试

     2.1  引入依赖:

     <dependency>

         <groupId>redis.clients</groupId>

         <artifactId>jedis</artifactId>

      </dependency>

     2.2  代码测试:

            Jedis jedis = new Jedis("localhost");

            jedis.ping();

     2.3  jedis抽象封装成三部分:

           2.3.1  对象池设计:pool、jedisPool、JedisFactory

           2.3.2  redis操作封装:jedisCommands、BinaryJedis、jedis

           2.3.4  面向redis服务器的操作封装:Commands、Client、BinaryClient

3.  测试

     3.1  字符串:

            存:jedis.set(key,value);

            取: jedis.get(key);

     3.2  列表

            存:jedis.lpush(key,value1);

                   jedis.lpush(key,value2);

            取:List<String> list = jedis.lrange(key,0,-1);

                   for(int i = 0; i<list.size(); i++){

                       list.get(i); 

                   }

      3.3  set:

             存:jedis.sadd(key,member1,member2,member3);  

             取:Set<String> smembers = jedis.smembers(key);

                     for(String str : smembers){

                          str

                      }

       3.4  hash:

             存: jedis.hset(key,field1,field1_value);

                     jedis.hset(key.field2,field2_value);

             取:Map<String,String> map = jedis.hgetAll(key);   

                     Set<Entry<String,String>> entrySet = map.entrySet();

                     for(Entry<String,String> entry : entrySet){

                          entry.getKey()+entry.getValue()

                     }         

       3.5  zset:

              存:Map<String,String> map = new HashMap<String,String>();

                      map.put(name1,value1);

                      map.put(name2,value2);

                      jedis.zadd(key,map);

              取:Set<String> zrange = jedis.zrange(key,0,-1);

                      for(String member : zrange){

                          member

                          jedis.zscore(key,member);

                      }  

          3.6  取所有键:

                 jedis.keys("*");   

4.  jedis通知:

     4.1  订阅(覆盖JedisPubSub中的onMessage方法) :

            JedisPubSub pubSub = new JedisPubSub(){

                   @Override

                   public void onMessage(String channel,String message){

                   }

            };

            jedis.subscribe(pubSub,"channel2");    

            发布:

            jedis.publish("channel2",message);

5.  队列:

     5.1  向队列中放入消息:

            jedis.lpush("queue","queue_message1","queue_message2");

     5.2  从队列中取消息:

            List<String> brpop = jedis.brpop(0,"queue");

            for(String str : brpop){

            }

     5.3  命令行从队列取消息:

            brpop queue 0

     5.4  5.2中接受到一条消息后就会跳出阻塞状态,如果需要不断的循环监听,则要使用while(true)  接受所有消息

6.  一次发送一批redis命令

    存:Pipeline p = jedis.pipelined();

           p.set("testStr","hi");

           p.zadd("testZset",0,"value1");

           p.zadd("testZset",1,"value2");

           Response<String> pipeStr = p.get("testStr",0,-1);

           Response<Set<String>> sose = p.zrange("testZset",0,-1);

           p.sync();(同步主从服务器)

           int soseSize = sose.get().size();

           Set<String> setBack = sose.get();

7.  希望命令一起执行不被干扰,可以通过transaction将命令打包到一起执行:

     jedis.watch(key1,key2,...);

     BinaryTransaction t = jedis.multi();

     t.set("test","testValue");

     t.exec();(执行所有事务块内的内容)

 

     取得返回值:

     Transaction t = jedis.multi();

     t.set("fool","bar");

     Response<String> result1 = t.get("fool");

     t.zadd("foo",1,"hi");

     t.zadd("foo",1,"hello");

     Response<Set<String>> sose = t.zrange("foo",0,-1);

     t.exec();

     String foolbar = result1.get();

     int soseSize = sose.get().size();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值