1. 程式人生 > >Redis做快取MySQL登入實現

Redis做快取MySQL登入實現

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