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

歡迎訪問 生活随笔!

生活随笔

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

数据库

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

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

    第6節(jié) Redis案例

    案例_分析&環(huán)境搭建

    day23.sql

    druid.properties

    案例_實現(xiàn)_查詢數(shù)據(jù)庫

    案例_實現(xiàn)_redis緩存優(yōu)化

    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節(jié) Redis案例

    案例_分析&環(huán)境搭建

    案例

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

    案例

    day23.sql

    CREATE DATABASE day23; -- 創(chuàng)建數(shù)據(jù)庫 USE day23; -- 使用數(shù)據(jù)庫 CREATE TABLE province( -- 創(chuàng)建表id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20) NOT NULL); -- 插入數(shù)據(jù) 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

    ??

    案例_實現(xiàn)_查詢數(shù)據(jù)庫

    案例_實現(xiàn)_redis緩存優(yōu)化

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

    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.執(zhí)行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工具類* 加載配置文件,配置連接池的參數(shù)* 提供獲取連接的方法*/ public class JedisPoolUtils {private static JedisPool jedisPool;static {//讀取配置文件InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");//創(chuàng)建Properties對象Properties pro = new Properties();//關(guān)聯(lián)文件try {pro.load(is);} catch (IOException e) {e.printStackTrace();}//獲取數(shù)據(jù),設(shè)置到JedisPoolConfig中JedisPoolConfig config = new JedisPoolConfig();//pro.getProperty("maxTotal"):獲取的值是字符串,配置要求的是int值config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));//最大連接數(shù)config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));//最大空閑連接數(shù)//初始化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中查詢數(shù)據(jù)//1.1獲取redis客戶端連接Jedis jedis = JedisPoolUtils.getJedis();String province_json = jedis.get("province");//2判斷 province_json 數(shù)據(jù)是否為nullif (province_json == null || province_json.length() == 0) {//redis中沒有數(shù)據(jù)System.out.println("redis中沒數(shù)據(jù),查詢數(shù)據(jù)庫...");//2.1從數(shù)據(jù)中查詢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數(shù)據(jù)存入redisjedis.set("province", province_json);//歸還連接jedis.close();} else {System.out.println("redis中有數(shù)據(jù),查詢緩存...");}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加載配置文件,獲取字節(jié)輸入流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.調(diào)用service查詢ProvinceService service = new ProvinceServiceImpl();List<Province> list = service.findAll();//2.序列化list為jsonObjectMapper mapper = new ObjectMapper();String json = mapper.writeValueAsString(list);*///1.調(diào)用service查詢ProvinceService service = new ProvinceServiceImpl();String json = service.findAllJson();System.out.println(json);//3.響應(yīng)結(jié)果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 () {//發(fā)送ajax請求,加載所有省份數(shù)據(jù)$.get("provinceServlet", {}, function (data) {//[{"id":1,"name":"北京"},{"id":2,"name":"上海"},{"id":3,"name":"廣州"},{"id":4,"name":"陜西"}]//1.獲取selectvar province = $("#province");//2.遍歷json數(shù)組$(data).each(function () {//3.創(chuàng)建<option>var option = "<option name='" + this.id + "'>" + this.name + "</option>";//4.調(diào)用select的append追加optionprovince.append(option);});});});</script> </head> <body><select id="province"><option>--請選擇省份--</option></select> </body> </html>

    加油~~~

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。