Redis的5種數據結構:string、list、hash、set和zset;
Redis 全部的數據結構都是以惟一的 key 字符串做爲名稱,而後經過這個惟一 key 值來獲取相應的 value 數據。不一樣類型的數據結構的差別就在於 value 的結構不同。redis
一、string表示的是一個可變的字節數組;
二、Redis的字符串時動態字符串,是能夠修改的;
三、內部結構實現上相似與Java的ArrayList,用預分配冗餘空間的方式來減小內存的頻繁分配;
四、字符串長度小於1M時,擴容都是加倍現有的空間;
五、長度大於1M時,擴容時指揮多擴1M的空間;
六、字符串最大長度爲512M;
七、字符串沒有提供子串插入和子串刪除方法;數組
# 初始化字符串(set 鍵 值) localhost:0>set muscleape com.muscleape.www "OK" # 獲取字符串內容(get 鍵) localhost:0>get muscleape "com.muscleape.www" # 獲取字符串的長度(strlen 鍵) localhost:0>strlen muscleape "17" # 獲取子串(getrange 鍵 開始下標 結束下標) localhost:0>getrange muscleape 4 12 "muscleape" # 覆蓋子串(setrange 鍵 開始位置 替換串) localhost:0>setrange muscleape 4 wzqwzqwzq "17" localhost:0>get muscleape "com.wzqwzqwzq.www" # 追加子串(append 鍵 子串) localhost:0>append muscleape .wzq "21" localhost:0>get muscleape "com.wzqwzqwzq.www.wzq"
一、若是字符串的內容是一個整數,能夠將字符串當作計數器來使用;數據結構
# 初始化 localhost:0>set muscleape 59 "OK" # 獲取值 localhost:0>get muscleape "59" # 增長(incrby 鍵 增長數值) localhost:0>incrby muscleape 200 "259" # 獲取值 localhost:0>get muscleape "259" # 減小(decrby 鍵 減小數值) localhost:0>decrby muscleape 200 "59" # 獲取值 localhost:0>get muscleape "59" # 增長1(incr 鍵)=> 等價於 => incrby 鍵 1 localhost:0>incr muscleape "60" # 減少1(decr 鍵)=> 等價於 => decrby 鍵 1 localhost:0>decr muscleape "59"
二、計數器是有範圍的,不能超過Long.Max,不能低於Long.MINapp
localhost:0>set muscleape 9223372036854775807 "OK" localhost:0>incr muscleape "ERR increment or decrement would overflow" # ##################################### localhost:0>set muscleape -9223372036854775808 "OK" localhost:0>decr muscleape "ERR increment or decrement would overflow"
字符串可使用del指令進行主動刪除,可使用expire指令設置過時時間,到點會自動刪除,這屬於被動刪除。可使用ttl指令獲取字符串的壽命;code
# 設置過時時間(expire 鍵 有效秒數);1表示設置成功,0表示變量ireader不存在 localhost:0>expire muscleape 60 "1" # 查詢壽命(ttl 鍵); 還有55秒的壽命,返回-2表示變量不存在,-1表示沒有設置過時時間 localhost:0>ttl muscleape "55" # 刪除(del 鍵)刪除成功返回1 localhost:0>del muscleape "1" localhost:0>get muscleape null