Redis做快取MySQL登入實現
阿新 • • 發佈:2019-02-16
package com.mind.core.db; import com.mind.core.db.impl.CacheService; import com.mind.core.db.impl.DBService; import redis.clients.jedis.Jedis; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * Created by Lovell on 16/6/22.*/ public class DaoTest { public static void main(String[] args) throws IOException, SQLException { Dao dao = new Dao(); dao.start(); String id="2"; String sql="select * from login where id='"+id+"'"; String name = null; Jedis jedis = CacheService.getInstance().getJedisPool().getResource();if(jedis.hexists("id"+id, "name")){ name = jedis.hget("id"+id, "name"); System.out.println("Welcome Redis! User "+ name +" login success"); }else{ Connection conn = DBService.getInstance().getConnection(); Statement statement = conn.createStatement(); ResultSet rs = statement.executeQuery(sql);if(rs.next()==false){ System.out.println("MySQL no register, Please register first"); }else{ name = rs.getString("name"); System.out.println("Welcome MySQL ! User "+name+" login success"); jedis.hset("id"+id, "name", name); // 十秒鐘就過期 jedis.expire("id"+id, 10); } } } }
1. 使用者登入首先判斷是否在redis快取中,如果在rRedis快取中,直接登入成功;
2. 若使用者未在Redis快取,則訪問MySQL,判斷使用者是否存在,如果不存在,則提示使用者註冊;如果存在,則登入成功;
3. 在MySQL存在並登入成功的同時,將改條資料用Redis Hash型別進行快取,並設定過期時間為10秒;
4. 設定Redis最大記憶體,若超出記憶體範圍,則使用FIFO方式進行清除。
在redis.conf檔案中找到並設定即可:maxmemory 10240000