1. 程式人生 > >Redis資料結構-string

Redis資料結構-string

Redis的5種資料結構:string、list、hash、set和zset

基本操作

1、string表示的是一個可變的位元組陣列;
2、Redis的字串時動態字串,是可以修改的;
3、內部結構實現上類似與Java的ArrayList,用預分配冗餘空間的方式來減少記憶體的頻繁分配;
4、字串長度小於1M時,擴容都是加倍現有的空間;
5、長度大於1M時,擴容時指揮多擴1M的空間;
6、字串最大長度為512M;
7、字串沒有提供子串插入和子串刪除方法;

# 初始化字串(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"

計數器

1、如果字串的內容是一個整數,可以將字串當做計數器來使用;

# 初始化
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"

2、計數器是有範圍的,不能超過Long.Max,不能低於Long.MIN

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指令獲取字串的壽命;

# 設定過期時間(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