theme: vue-pro
這是我參與11月更文挑戰的第1天,活動詳情查看:2021最后一次更文挑戰
溫故才能知新(復習一下)
上篇文章我們學習了RedisTemplate中的execute的概念,理解了execute的概念。
execute提供了基礎的操作Redis方法的實現,為其他特定數據類型操作方法提供了基礎方法的實現。
今天我們是要來學習一下RedisTemplate中的execute方法具體使用方法,並且提供出相應的代碼實現,一起來學習吧。
如何正確使用execute方法
execute(RedisCallback\ action)
public <T> T execute(RedisCallback<T> action)
此方法需要傳入的參數時一個RedisCallback對象實例,實際是一個Redis連接成功的回調方法,一般都是以下方式去調用的。
通過Redis的鏈接來操作Redis數據庫中的鍵值。
代碼使用:
redisTemplate.execute((connection) -> { return connection.del(new byte[][]{"redis-key"}); });
execute(RedisCallback\ action, boolean exposeConnection)
public <T> T execute(RedisCallback<T> action, boolean exposeConnection)
大家可以看得出來,這個方法同上面的方法,只是多了一個exposeConnection的布爾類型參數,那么這個參數是干什么的?有什么作用呢?
exposeConnection參數的含義是是否要暴露connection,如果為true,那么就可以在回調函數中使用當前連接connection對象。
代碼使用:
redisTemplate.execute((connection) -> { return connection.del(new byte[][]{"redis-key"}); }, true);
execute(RedisCallback\ action, boolean exposeConnection, boolean pipeline)
public <T> T execute(RedisCallback<T> action, boolean exposeConnection, boolean pipeline)
如果你看了這幾個方法的源碼,你就會發現,前面三個execute方法的核心其實就是這個,因為前兩個方法依然會調用這個方法,只不過多了兩個參數值而已。
exposeConnection我們已經說過了,pipeline的含義則是是否開啟管道,管道是可以承載一定數據的鏈路。
代碼使用:
redisTemplate.execute((connection) -> { return connection.del(new byte[][]{"redis-key"}); }, true, false);
execute(SessionCallback\ session)
public <T> T execute(SessionCallback<T> session)
這個方法有所不同,因為參數和前三個參數不一樣了,之前的回調函數是RedisCallback,這個方法的回調是SessionCallback回調對象。
是可以傳入SessionCallback回調對象的方法。
注意
這里要注意一點,雖然execute方法是底層方法,但是並不代表一定要用,我們在日常開發中其實最好還是使用基於execute方法封裝的一些特定數據類型的操作Redis方法,因為execute方法使用起來並沒有其他的方法簡單,反而更容易出錯。
小結
今天學習了RedisTemplate的execute相關的幾個重載方法是如何使用的,不知道大家有什么樣的心得呢?