如下,均爲本身花費時間測試跟描寫,歡迎轉載,轉載請標明出處跟做者,我不但願本身的辛苦勞動被轉載並且還不標明做者跟出處,請尊重做者的勞動成果
並且,官方文檔,以及源碼,並無方法註釋,在文章最下面有我的對方法描述,都是我的描述,可能會有偏差,以及描述不當的地方,請見諒!
1.個人項目是maven項目,最近由於要用到,先引進下面兩個包 java
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.6.2</version> </dependency>
2. 配置redis連接,由於spring-data集成了reids,咱們只須要在properties裏面配置數據庫鏈接等就OK了redis
spring.redis.host=redisIP spring.redis.port=端口 spring.redis.pool.max-active=鏈接數 spring.redis.pool.max-idle=最大鏈接數 spring.redis.pool.min-idle=最小鏈接數 spring.redis.pool.max-wait=超時時間
3.StringRedisTemplate 是對redis數據庫操做的封裝模板,下圖,是咱們要使用模板的類關係spring
4.下面上測試代碼咯!數據庫
------------------------------分割線-------------------------------------------緩存
1.先獲取方法模板,可使用@autowired 自動注入app
String key = "hexiaowu"; /** * 先獲取redis對value的操做對象,須要先設定key */ BoundValueOperations<String, String> stringTemplate = redisTemplate.boundValueOps(key);
2.對value操做的模板,有不少方法,咱們下面一個一個來測試maven
set 方法spring-boot
有三個重載的方法,分別是幹嗎的呢,咱們來測試下吧測試
//賦值key stringTemplate.set("test"); //獲取value String value = stringTemplate.get(); System.out.println(key+"的值爲:"+value); //從value下標,第0位開始替換原有字符串 stringTemplate.set("test1",0); String value1 = stringTemplate.get(); System.out.println(key+"的值爲:"+value1); //從value下標,第1位開始替換原有字符 stringTemplate.set("test2",1); String value2 = stringTemplate.get(); System.out.println(key+"的值爲:"+value2); //從value下標第7位進行替換,若是超過原有字符串長度,差額中間補齊而且則將原有字符串跟新的進行拼接, stringTemplate.set("test3",7); String value3 = stringTemplate.get(); System.out.println(key+"的值爲:"+value3); /** * 設置value緩存時間 V value, long timeout, TimeUnit unit * 三個字段分別對應 value,緩存時間,緩存單位,例如天,小時等,具體的,看TimeUnit源碼,上面有描寫,這裏就不一一介紹了 */ //設置超時時間爲1天 stringTemplate.set("testTimeout",1, TimeUnit.DAYS); //獲取緩存時間,單位 秒 Long expire = stringTemplate.getExpire(); System.out.println(key+"的緩存時間爲:"+expire);
下面是測試結果:spa
hexiaowu的值爲:test hexiaowu的值爲:test1 hexiaowu的值爲:ttest2 hexiaowu的值爲:ttest2test3 hexiaowu的緩存時間爲:86400
說明結果跟註釋描寫的一致,那接下來,咱們測試其餘方法咯
get 方法
下面是測試代碼:
//賦值key stringTemplate.set("test"); //根據key獲取value的值 String value = stringTemplate.get(); System.out.println(key+"的值爲:"+value); //從 value 的下標開始截取字符串,從第一個參數開始,到第二個參數截止 // 第一個參數不能小於0,若是小於0,則取出來的是個空字符串, // 第二個參數能夠大於value的長度,這樣,取出來的value就是完整的value,不會截取 String value1 = stringTemplate.get(0, 1); System.out.println(key+"的值爲:"+value1); // 獲取原來的value,而且進行替換 String modifyTest = stringTemplate.getAndSet("modifyTest"); System.out.println(key+"的值爲:"+modifyTest); String value3 = stringTemplate.get(); System.out.println(key+"的值爲:"+value3); //獲取value的緩存時間,單位:秒 -1表示永不超時 Long expire = stringTemplate.getExpire(); System.out.println(key+"的超時時間:"+expire); //獲取key值 String key1 = stringTemplate.getKey(); System.out.println(key+"的key值爲:"+key1); //獲取value的類型 DataType type = stringTemplate.getType(); System.out.println(value+"的類型爲:"+type); //獲取 RedisOperations 接口實現對象 RedisOperations<String, String> operations = stringTemplate.getOperations();
測試結果:
hexiaowu的值爲:test hexiaowu的值爲:te hexiaowu的值爲:test hexiaowu的值爲:modifyTest hexiaowu的超時時間:-1 hexiaowu的key值爲:hexiaowu test的類型爲:STRING
一些其餘方法測試,就直接貼測試代碼了
//賦值value stringTemplate.set("1"); //設置 key的緩存時間 // 能夠先添加對應的value,而後在設置緩存時間 Boolean expire = stringTemplate.expire(1, TimeUnit.DAYS); System.out.println(key+"設置緩存時間是否成功:"+expire); //獲取緩存時間 Long expire1 = stringTemplate.getExpire(); System.out.println(expire1); //設置具體的到期時間,而且返回是否設置成功,例如,設定當天8點,8點後就會自動銷燬 Boolean expireTime = stringTemplate.expireAt(new Date()); System.out.println("是否設置成功:"+expireTime); //獲取剩餘過時時間 Long expire3 = stringTemplate.getExpire(); System.out.println("剩餘到期時間:"+expire3); //刪除key的到期時間,而且返回是否刪除成功 Boolean persist = stringTemplate.persist(); System.out.println("刪除key的緩存時間是否成功:"+persist); //獲取剩餘過時時間 Long expire2 = stringTemplate.getExpire(); System.out.println("key的緩存時間爲"+expire2); String value = stringTemplate.get(); System.out.println("原來的value="+value+",長度爲:"+value.length()); //在value值的基礎上進行追加添加,而且返回新的字符串長度 Integer addComment = stringTemplate.append("2"); String s = stringTemplate.get(); System.out.println("新的value="+s+",新的字符串長度爲"+addComment); String value1 = stringTemplate.get(); System.out.println("原來的value="+value1); //若是value 是number類型,增長value的值,如 12變爲 12+param,而且返回新的value // 方法重載,能夠傳遞2中參數,一個是 long還有一個是double,分別返回對應參數的類型 value Long increment = stringTemplate.increment(1); System.out.println("value增長參數後的值爲:"+increment); String s1 = stringTemplate.get(); System.out.println("新的value="+s1); //獲取value的長度 Long size = stringTemplate.size(); System.out.println("value的長度爲"+size); //刪除key redisTemplate.delete(key); //若是key沒有設置value的話,那麼參數設置爲value Boolean asd = stringTemplate.setIfAbsent("123"); System.out.println("新的value="+stringTemplate.get()); System.out.println("舊的key爲:"+stringTemplate.getKey()); //替換key的名稱 stringTemplate.rename("newhexiaowu"); System.out.println("新的key爲:"+stringTemplate.getKey());
接下來就是測試結果:
hexiaowu設置緩存時間是否成功:true 86400 是否設置成功:true 剩餘到期時間:36 刪除key的緩存時間是否成功:true key的緩存時間爲-1 原來的value=1,長度爲:1 新的value=12,新的字符串長度爲2 原來的value=12 value增長參數後的值爲:13 新的value=13 value的長度爲2 新的value=123 舊的key爲:hexiaowu 新的key爲:newhexiaowu
以上就是本人測試的一些結果,可能會有一些出入什麼的,歡迎指正
BoundValueOperations 接口文檔,由於官方文檔並無對方法的描述,源碼裏面也沒有註釋,因此在下面增長一份方法做用描述.方法中的 V,K均爲String,你們能夠收藏文章保存,之後忘了,能夠進行查閱
方法名 | 方法描述 |
void set(V value) | 設定key對應的vlaue值 |
void set(V value,long offset) | 將value值從第offset位開始替換 |
void set(V value, long timeout, TimeUnit unit) | 設置value的超時時間,timeout爲數字,unit爲單位,例如天,小時等 |
Boolean setIfAbsent(V value) | 判斷key是否有對應的value,若是有,則返回false,若是沒有,添加,返回true |
V get() | 返回key對應的value |
String get(long start, long end) | 從start開始,到end結束,截取value的值 |
V getAndSet(V value) | 替換value的值,而且返回value的舊值 |
Long increment(long delta) | 若是value是數字類型的字符串,那麼增長delta,而且返回新的value |
Double increment(double delta) | 若是value是數字類型的字符串,那麼增長delta,而且返回新的value |
Integer append(String value) | 在value值後面進行添加,而且返回新value的長度 |
Long size() | 返回value的長度 |
Boolean expire(long var1, TimeUnit var3) | 設置key的緩存時間,var1爲數字,unit爲單位,例如天,小時等,返回是否設置成功 |
Boolean expireAt(Date var1) | 設置key的具體到期時間,而且返回是否設置成功 |
Long getExpire() | 返回key的剩餘緩存時間,單位:秒 |
K getKey() | 返回key的名稱 |
DataType getType() | 獲取key的類型 |
Boolean persist() | 刪除key的緩存時間 |
void rename(K var1) | 修改key的名稱 |
上面就是我本身測試的一些方法,下次測試對redis對List,Set等集合的操做.
若是以爲好,請回復下,謝謝,
歡迎轉載,請註明出處跟做者,謝謝!