1. 程式人生 > 其它 >redis百萬級資料存取

redis百萬級資料存取

       Jedis jedis0 = new Jedis("localhost", 6379);
        jedis0.auth("123456");
        Pipeline pipelined = jedis0.pipelined();
        Set<String> keys = jedis0.keys("batch*");
        for (String key:keys){
            pipelined.get(key);
        }
        
                List<Object> objects = pipelined.syncAndReturnAll();
                long l1 = System.currentTimeMillis();
                for (Object src:objects){
                    System.out.println(src);
                }
                long l2 = System.currentTimeMillis();
                System.out.println("耗時:"+(l2-l1)+"ms");
            }

使用Pipeline百萬級資料7



        Jedis jedis0 = new Jedis("localhost", 6379);
        jedis0.auth("123456");

                
        long l1 = System.currentTimeMillis();

        for (int i = 0; i < 1000000; i++) {
            jedis0.get("batch" + i);
        }
        long l2 = System.currentTimeMillis();
        System.out.println("耗時:" + (l2 - l1) + "ms");
 
普通get去獲取耗時:耗時:48622ms

前提redis版本要支援快取,redis原始碼每次快取8192個位元組,


# client-output-buffer-limit <class> <hard limit> <soft limit> <soft seconds>超過這個限制直接斷開連線,不然存了

client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

obl:輸出快取區長度

oll: 使用快取的數量

omen:obl和oll佔用的內記憶體

使用時要控制記憶體,因為使用Pipeline即使用本地客戶端記憶體,也用服務端記憶體,適合用實施性不高的場景

一點點學習,一絲絲進步。不懈怠,才不會被時代淘汰