Redis是如何進行內存管理的?緩存中有哪些常見問題?如何實現分佈式鎖?
Redis內存管理 Redis的內存用完了會怎樣? 如果達到設置的上限,Redis的寫命令會返回錯誤信息(但是讀命令還可以正常返回)。 也可以配置內存淘汰機制,當Redis達到內存上限時會沖刷掉舊的內容。 Redis如何做內存優化? 可以好好利用Hash,list,sorted set,set等集合類型數據,因為通常情況下很多小的Key-Value可以用更緊湊的方式存放到一起。儘可能使用散列表(h
Redis內存管理 Redis的內存用完了會怎樣? 如果達到設置的上限,Redis的寫命令會返回錯誤信息(但是讀命令還可以正常返回)。 也可以配置內存淘汰機制,當Redis達到內存上限時會沖刷掉舊的內容。 Redis如何做內存優化? 可以好好利用Hash,list,sorted set,set等集合類型數據,因為通常情況下很多小的Key-Value可以用更緊湊的方式存放到一起。儘可能使用散列表(h
主要構件及其相互關係 主要構件: 主要的核心部件解釋如下: SqlSession: 作為MyBatis工作的主要頂層API,表示和數據庫交互的會話,完成必要數據庫增刪改查功能 Executor:MyBatis執行器,是MyBatis 調度的核心,負責SQL語句的生成和查詢緩存的維護 StatementHandler: 封裝了JDBC Statement操作,負責對JDBC stateme
sqlSessionFactory 與 SqlSession 正如其名,Sqlsession對應着一次數據庫會話。由於數據庫會話不是永久的,因此Sqlsession的生命週期也不應該是永久的,相反,在你每次訪問數據庫時都需要創建它(當然並不是説在Sqlsession裏只能執行一次sql,你可以執行多次,當一旦關閉了Sqlsession就需要重新創建它)。 那麼咱們就先看看是怎麼獲取SqlSessi
引入 我們在使用mybatis的時候,會在xml中編寫sql語句。比如這段動態sql代碼: update id="update" parameterType="org.format.dynamicproxy.mybatis.bean.User" UPDATE users trim prefix="SET" prefixOverrides="," if test="n
MyBatis數據源DataSource分類 MyBatis把數據源DataSource分為三種: UNPOOLED 不使用連接池的數據源 POOLED 使用連接池的數據源 JNDI 使用JNDI實現的數據源 相應地,MyBatis內部分別定義了實現了java.sql.DataSource接口的UnpooledDataSource,PooledDataSource類來表示UNPOOLED
源碼分析 插件機制 首先我們看下MyBatis攔截器的接口定義: public interface Interceptor { Object intercept(Invocation invocation) throws Throwable; Object plugin(Object target); void setProperties(Properties propertie
概述 對數據庫的事務而言,應該具有以下幾點:創建(create)、提交(commit)、回滾(rollback)、關閉(close)。對應地,MyBatis將事務抽象成了Transaction接口: MyBatis的事務管理分為兩種形式: 使用JDBC的事務管理機制:即利用java.sql.Connection對象完成對事務的提交(commit())、回滾(rollback())、關閉(cl
一級緩存實現 什麼是一級緩存? 為什麼使用一級緩存? 每當我們使用MyBatis開啓一次和數據庫的會話,MyBatis會創建出一個SqlSession對象表示一次數據庫會話。 在對數據庫的一次會話中,我們有可能會反覆地執行完全相同的查詢語句,如果不採取一些措施的話,每一次查詢都會查詢一次數據庫,而我們在極短的時間內做了完全相同的查詢,那麼它們的結果極有可能完全相同,由於查詢一次數據庫的代價很大,這
配置解析主體方法 public Configuration parse() { if (parsed) { throw new BuilderException("Each XMLConfigBuilder can only be used once."); } parsed = true; //源碼中沒有這一句,只有 parse
SpringBoot基礎 什麼是 Spring Boot? SpringBoot是一個簡化 Spring 應用程序開發的框架,它的主要目標是減少 Spring 應用程序的配置和開發複雜性,使我們能夠更快地構建、測試和部署 Spring 應用。簡單來説,它通過提供默認配置、自動化配置和嵌入式服務器等功能,簡化了傳統Spring 應用的繁瑣配置過程。有人將一些依賴關係、默認配置都梳理好了,我們直接一個