cari
RumahJavajavaTutorialJava中关于redis键的生存时间(expire)具体分析

1、redis中可以使用expire命令设置一个键的生存时间,到时间后redis会自动删除它
     expire      设置生存时间(单位/秒)
     pexpire    设置生存时间(单位/毫秒)
     ttl/pttl     查看键的剩余生存时间
     persist     取消生存时间
     expireat [key] unix时间戳1351858600
     pexpireat [key] unix时间戳(毫秒)1351858700000
2、应用场景
     限时的优惠活动
     网站数据缓存(对于一些需要定时更新的数据)
     限制网站访客访问频率(例如:1分钟最多访问10次)


    /** 
         * 限制网站访客访问频率(例如:1分钟最多访问10次),其中: 访客通过IP标识,即同一个IP在1分钟内仅能访问10次 
         */  
        @Test  
        public void test4(){  
              final String ip = "127.0.0.1" ;  
             Jedis redis = null;  
              //模拟同一个用户连续访问20次  
              for(int i =0;i <20;i ++){  
                  boolean t = validate(ip);  
                  if(t ){  
                     System. out.println("恭喜你,购票成功!" +i );  
                 } else{  
                      //获取当前ip过期时间  
                      redis = getRedis();  
                      break;  
                 }  
             }  
              while(true &&redis.ttl(ip)>0){  
                 System. out.println("抱歉,你访问过度频繁,请" +redis .ttl(ip )+"秒后再来访问!" );  
                  try {  
                     Thread. sleep(1000);  
                 } catch (InterruptedException e ) {  
                      e.printStackTrace();  
                 }  
             }  
             System. out.println("你可以再次访问了" );  
        }  
      
        /** 
         * 
         * @param ip 
         * @return  true: 可以访问,false: 表示已经达到最大上线 
         */  
        public boolean validate( String ip ) {  
             Jedis jedis = getRedis();  
             String value = jedis.get( ip);  
              if(value ==null||value.length()==0){ //第一次访问  
                  jedis.setex( ip, 60,String. valueOf(0));  
             } else{  
                  int v = Integer.parseInt (value );  
                  if(v >=10){  
                      return false ;  
                 }  
             }  
              jedis.incr( ip);  
              return true ;  
        }  
      
        /** 
         * @return 
         */  
        public Jedis getRedis() {  
              jedisPool = getJedisPool();  
             Jedis jedis = jedisPool.getResource();  
              return jedis ;  
        }  
      
        /** 
         * 
         */  
        public JedisPool getJedisPool() {  
             JedisPoolConfig poolConfig = new JedisPoolConfig();  
              // 控制一个pool最多有多少个 jedis实例。  
              poolConfig.setMaxTotal(1000);  
              // 控制一个pool最多有多少个状态为idle(空闲的)的 jedis实例。  
              poolConfig.setMaxIdle(10);  
              // 表示当borrow(引入)一个 jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;  
              poolConfig.setMaxWaitMillis(200000);  
              // 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的 jedis实例均是可用的;  
              poolConfig.setTestOnBorrow(true);  
      
              return new JedisPool(poolConfig, host, port);  
        }

 

Atas ialah kandungan terperinci Java中关于redis键的生存时间(expire)具体分析. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Bagaimanakah JVM menguruskan koleksi sampah di platform yang berbeza?Bagaimanakah JVM menguruskan koleksi sampah di platform yang berbeza?Apr 28, 2025 am 12:23 AM

JVMmanagesgarbagecollectionacrossplatformseffectivelybyusingagenerationalapproachandadaptingtoOSandhardwaredifferences.ItemploysvariouscollectorslikeSerial,Parallel,CMS,andG1,eachsuitedfordifferentscenarios.Performancecanbetunedwithflagslike-XX:NewRa

Mengapa kod Java boleh dijalankan pada sistem pengendalian yang berbeza tanpa pengubahsuaian?Mengapa kod Java boleh dijalankan pada sistem pengendalian yang berbeza tanpa pengubahsuaian?Apr 28, 2025 am 12:14 AM

Kod Java boleh dijalankan pada sistem pengendalian yang berbeza tanpa pengubahsuaian, kerana falsafah "Write Once, Run, Everywhere" Java dilaksanakan oleh Java Virtual Machine (JVM). Oleh kerana perantara antara bytecode Java yang disusun dan sistem operasi, JVM menerjemahkan bytecode ke dalam arahan mesin tertentu untuk memastikan program itu dapat dijalankan secara bebas di mana -mana platform dengan JVM dipasang.

Huraikan proses menyusun dan melaksanakan program Java, menonjolkan kebebasan platform.Huraikan proses menyusun dan melaksanakan program Java, menonjolkan kebebasan platform.Apr 28, 2025 am 12:08 AM

Penyusunan dan pelaksanaan program Java mencapai kemerdekaan platform melalui Bytecode dan JVM. 1) Tulis kod sumber Java dan menyusunnya ke dalam bytecode. 2) Gunakan JVM untuk melaksanakan bytecode pada mana -mana platform untuk memastikan kod berjalan di seluruh platform.

Bagaimanakah seni bina perkakasan yang mendasari mempengaruhi prestasi Java?Bagaimanakah seni bina perkakasan yang mendasari mempengaruhi prestasi Java?Apr 28, 2025 am 12:05 AM

Prestasi Java berkait rapat dengan seni bina perkakasan, dan memahami hubungan ini dapat meningkatkan keupayaan pengaturcaraan dengan ketara. 1) JVM menukarkan bytecode Java ke dalam arahan mesin melalui kompilasi JIT, yang dipengaruhi oleh seni bina CPU. 2) Pengurusan memori dan koleksi sampah dipengaruhi oleh RAM dan kelajuan bas memori. 3) Ramalan cache dan cawangan mengoptimumkan pelaksanaan kod Java. 4) Pemprosesan pelbagai threading dan selari meningkatkan prestasi pada sistem multi-teras.

Jelaskan mengapa perpustakaan asli boleh memecahkan kemerdekaan platform Java.Jelaskan mengapa perpustakaan asli boleh memecahkan kemerdekaan platform Java.Apr 28, 2025 am 12:02 AM

Menggunakan perpustakaan asli akan memusnahkan kemerdekaan platform Java, kerana perpustakaan ini perlu dikumpulkan secara berasingan untuk setiap sistem operasi. 1) Perpustakaan asli berinteraksi dengan Java melalui JNI, menyediakan fungsi yang tidak dapat dilaksanakan secara langsung oleh Java. 2) Menggunakan perpustakaan asli meningkatkan kerumitan projek dan memerlukan menguruskan fail perpustakaan untuk platform yang berbeza. 3) Walaupun perpustakaan asli dapat meningkatkan prestasi, mereka harus digunakan dengan berhati-hati dan menjalankan ujian silang platform.

Bagaimanakah JVM mengendalikan perbezaan dalam sistem operasi API?Bagaimanakah JVM mengendalikan perbezaan dalam sistem operasi API?Apr 27, 2025 am 12:18 AM

JVM Mengendalikan Perbezaan API Sistem Operasi melalui JavanativeInterface (JNI) dan Perpustakaan Standard Java: 1. JNI membenarkan kod Java untuk memanggil kod tempatan dan terus berinteraksi dengan API Sistem Operasi. 2. Perpustakaan Standard Java menyediakan API bersatu, yang dipetakan secara dalaman kepada API sistem operasi yang berbeza untuk memastikan kod tersebut berjalan di seluruh platform.

Bagaimanakah modulariti yang diperkenalkan dalam kemerdekaan platform kesan Java 9?Bagaimanakah modulariti yang diperkenalkan dalam kemerdekaan platform kesan Java 9?Apr 27, 2025 am 12:15 AM

modularitydoesnotdirectlyaffectjava'splatformindected.java'splatformindectenceismaintybythejvm, butmodularityinfluencesapplicationstructureandManagement, indirectlyimpactingplatformindect.1) DeploymentandmentandmentweMbecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecom

Apakah bytecode, dan bagaimanakah ia berkaitan dengan kemerdekaan platform Java?Apakah bytecode, dan bagaimanakah ia berkaitan dengan kemerdekaan platform Java?Apr 27, 2025 am 12:06 AM

BytecodeinjavaistheintermediaterepresentationThateNableSplatformindant.1) javacodeiscompiledintobytecodestoredin.classfiles.2)

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft