日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis-学习笔记06【Redis案例】

發布時間:2024/9/30 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis-学习笔记06【Redis案例】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • Java后端 學習路線 筆記匯總表【黑馬程序員】
  • Redis-學習筆記01【Redis環境搭建】
  • Redis-學習筆記02【Redis命令操作】
  • Redis-學習筆記03【Redis持久化】
  • Redis-學習筆記04【Jedis代碼操作】
  • Redis-學習筆記05【Jedis連接池】
  • Redis-學習筆記06【Redis案例】
  • 目錄

    第6節 Redis案例

    案例_分析&環境搭建

    day23.sql

    druid.properties

    案例_實現_查詢數據庫

    案例_實現_redis緩存優化

    package cn.itcast.dao;

    ProvinceDaoImpl.java

    ProvinceDao.java

    package cn.itcast.domain;

    Province.java

    package cn.itcast.jedis;

    JedisPoolUtils.java

    package cn.itcast.service;

    ProvinceServiceImpl.java

    ProvinceService.java

    package cn.itcast.util;

    JDBCUtils.java

    package cn.itcast.web;

    ProvinceServlet.java

    web

    index.html


    第6節 Redis案例

    案例_分析&環境搭建

    案例

    案例需求:
    ?? ?1. 提供index.html頁面,頁面中有一個省份(下拉列表)。
    ?? ?2. 當頁面加載完成后,發送ajax請求,加載所有省份。

    案例

    day23.sql

    CREATE DATABASE day23; -- 創建數據庫 USE day23; -- 使用數據庫 CREATE TABLE province( -- 創建表id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20) NOT NULL); -- 插入數據 INSERT INTO province VALUES(NULL,'北京'); INSERT INTO province VALUES(NULL,'上海'); INSERT INTO province VALUES(NULL,'廣州'); INSERT INTO province VALUES(NULL,'陜西');

    druid.properties

    driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql:///day23 username=root password=root initialSize=5 maxActive=10 maxWait=3000

    ??

    案例_實現_查詢數據庫

    案例_實現_redis緩存優化

    * 注意:使用redis緩存一些不經常發生變化的數據。
    ?? ?* 數據庫的數據一旦發生改變,則需要更新緩存。
    ?? ??? ?* 數據庫的表執行“增刪改”的相關操作,需要將redis緩存數據清空,再次存入。
    ?? ??? ?* 在service對應的增刪改方法中,將redis數據刪除。

    package cn.itcast.dao;

    ProvinceDaoImpl.java

    package cn.itcast.dao.impl;import cn.itcast.dao.ProvinceDao; import cn.itcast.domain.Province; import cn.itcast.util.JDBCUtils; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate;import java.util.List;public class ProvinceDaoImpl implements ProvinceDao {//1.聲明成員變量 jdbctemplementprivate JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());@Overridepublic List<Province> findAll() {//1.定義sqlString sql = "select * from province ";//2.執行sqlList<Province> list = template.query(sql, new BeanPropertyRowMapper<Province>(Province.class));return list;} }

    ProvinceDao.java

    package cn.itcast.dao;import cn.itcast.domain.Province;import java.util.List;public interface ProvinceDao {public List<Province> findAll(); }

    package cn.itcast.domain;

    Province.java

    package cn.itcast.domain;public class Province {private int id;private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;} }

    package cn.itcast.jedis;

    JedisPoolUtils.java

    package cn.itcast.jedis.util;import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig;import java.io.IOException; import java.io.InputStream; import java.util.Properties;/*** JedisPool工具類* 加載配置文件,配置連接池的參數* 提供獲取連接的方法*/ public class JedisPoolUtils {private static JedisPool jedisPool;static {//讀取配置文件InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");//創建Properties對象Properties pro = new Properties();//關聯文件try {pro.load(is);} catch (IOException e) {e.printStackTrace();}//獲取數據,設置到JedisPoolConfig中JedisPoolConfig config = new JedisPoolConfig();//pro.getProperty("maxTotal"):獲取的值是字符串,配置要求的是int值config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));//最大連接數config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));//最大空閑連接數//初始化JedisPool對象jedisPool = new JedisPool(config, pro.getProperty("host"), Integer.parseInt(pro.getProperty("port")));}/*** 獲取連接方法*/public static Jedis getJedis() {return jedisPool.getResource();//獲取連接} }

    package cn.itcast.service;

    ProvinceServiceImpl.java

    package cn.itcast.service.impl;import cn.itcast.dao.ProvinceDao; import cn.itcast.dao.impl.ProvinceDaoImpl; import cn.itcast.domain.Province; import cn.itcast.jedis.util.JedisPoolUtils; import cn.itcast.service.ProvinceService; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import redis.clients.jedis.Jedis;import java.util.List;public class ProvinceServiceImpl implements ProvinceService {//聲明daoprivate ProvinceDao dao = new ProvinceDaoImpl();@Overridepublic List<Province> findAll() {return dao.findAll();}/*** 使用redis緩存*/@Overridepublic String findAllJson() {//1.先從redis中查詢數據//1.1獲取redis客戶端連接Jedis jedis = JedisPoolUtils.getJedis();String province_json = jedis.get("province");//2判斷 province_json 數據是否為nullif (province_json == null || province_json.length() == 0) {//redis中沒有數據System.out.println("redis中沒數據,查詢數據庫...");//2.1從數據中查詢List<Province> ps = dao.findAll();//2.2將list序列化為jsonObjectMapper mapper = new ObjectMapper();try {province_json = mapper.writeValueAsString(ps);} catch (JsonProcessingException e) {e.printStackTrace();}//2.3 將json數據存入redisjedis.set("province", province_json);//歸還連接jedis.close();} else {System.out.println("redis中有數據,查詢緩存...");}return province_json;} }

    ProvinceService.java

    package cn.itcast.service;import cn.itcast.domain.Province;import java.util.List;public interface ProvinceService {public List<Province> findAll();public String findAllJson(); }

    package cn.itcast.util;

    JDBCUtils.java

    package cn.itcast.util;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.SQLException; import java.util.Properties;/*** JDBC工具類 使用Durid連接池*/ public class JDBCUtils {private static DataSource ds;static {try {//1.加載配置文件Properties pro = new Properties();//使用ClassLoader加載配置文件,獲取字節輸入流InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");pro.load(is);//2.初始化連接池對象ds = DruidDataSourceFactory.createDataSource(pro);} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}/*** 獲取連接池對象*/public static DataSource getDataSource() {return ds;}/*** 獲取連接Connection對象*/public static Connection getConnection() throws SQLException {return ds.getConnection();} }

    package cn.itcast.web;

    ProvinceServlet.java

    package cn.itcast.web.servlet;import cn.itcast.service.ProvinceService; import cn.itcast.service.impl.ProvinceServiceImpl;import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;@WebServlet("/provinceServlet") public class ProvinceServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {/* //1.調用service查詢ProvinceService service = new ProvinceServiceImpl();List<Province> list = service.findAll();//2.序列化list為jsonObjectMapper mapper = new ObjectMapper();String json = mapper.writeValueAsString(list);*///1.調用service查詢ProvinceService service = new ProvinceServiceImpl();String json = service.findAllJson();System.out.println(json);//3.響應結果response.setContentType("application/json;charset=utf-8");response.getWriter().write(json);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);} }

    web

    index.html

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><script src="js/jquery-3.3.1.min.js"></script><script>$(function () {//發送ajax請求,加載所有省份數據$.get("provinceServlet", {}, function (data) {//[{"id":1,"name":"北京"},{"id":2,"name":"上海"},{"id":3,"name":"廣州"},{"id":4,"name":"陜西"}]//1.獲取selectvar province = $("#province");//2.遍歷json數組$(data).each(function () {//3.創建<option>var option = "<option name='" + this.id + "'>" + this.name + "</option>";//4.調用select的append追加optionprovince.append(option);});});});</script> </head> <body><select id="province"><option>--請選擇省份--</option></select> </body> </html>

    加油~~~

    總結

    以上是生活随笔為你收集整理的Redis-学习笔记06【Redis案例】的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。