字串型別是 redis 中最為基礎的資料儲存型別,是乙個由位元組組成的序列,它可以接受任何格式的資料,如jpeg影象資料或json物件描述資訊等,是標準的key-value,一般用來存字串、整數和浮點數。value最多可容納的資料長度為512mb。
key定義的注意點:
set 賦值:
127.0.0.1:6379> set age 18
ok
get 取值:
127.0.0.1:6379> get age
"18"
getset 獲取並設定值
127.0.0.1:6379> getset age 19
"18"
127.0.0.1:6379> get age
"19"
setrange/getrange【命令格式】:setrange key offset valuegetrange key start end
setrange 用 value 引數覆寫給定 key 所儲存的字串值,從偏移量 offset 開始。不存在的 key 當作空白字串處理。setrange 命令會確保字串足夠長以便將 value 設定在指定的偏移量上,如果給定key原來儲存的字串長度比偏移量小,那麼原字元和偏移量之間的空白將用零位元組(zerobytes, "\x00" )來填充
getrange 返回 key 中字串值的子字串,字串的擷取範圍由 start 和 end 兩個偏移量決定(包括 start 和 end 在內)。負數偏移量表示從字串最後開始計數,-1 表示最後乙個字元,-2 表示倒數第二個,以此類推。
getrange 通過保證子字串的值域(range)不超過實際字串的值域來處理超出範圍的值域請求。不支援迴繞操作。
127.0.0.1:6379> set hello "hello world!"
ok127.0.0.1:6379> setrange hello 6 "redis"
(integer) 12
127.0.0.1:6379> get hello
"hello redis!"
127.0.0.1:6379> setrange hello 13 ^_^
(integer) 16
127.0.0.1:6379> get hello
"hello redis!\x00^_^"
127.0.0.1:6379>
127.0.0.1:6379> set hello "hello world"
ok127.0.0.1:6379> getrange hello 0 -1
"hello world"
127.0.0.1:6379> getrange hello 0 3
"hell"
127.0.0.1:6379> getrange hello -1 -5
""127.0.0.1:6379> getrange hello -5 -1
"world"
msetnx key value [key value ...]
同時設定乙個或多個 key-value 對,當且僅當所有給定 key 都不存在。del 刪除即使只有乙個給定 key 已存在, msetnx 也會拒絕執行所有給定 key 的設定操作。
msetnx 是原子性的,因此它可以用作設定多個不同 key 表示不同字段(field)的唯一性邏輯物件(unique logic object),所有字段要麼全被設定,要麼全不被設定。
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> get name
(nil)
incr 自增
127.0.0.1:6379> incr n
(integer) 1
127.0.0.1:6379> get n
"1"127.0.0.1:6379>
127.0.0.1:6379> incr age
(integer) 20
decr 自減
127.0.0.1:6379> decr i
(integer) -1
127.0.0.1:6379> decr age
(integer) 19
incrby 指定增量值
127.0.0.1:6379> get age
"19"
127.0.0.1:6379> incrby age 4
(integer) 23
decrby 指定減量值
127.0.0.1:6379> decrby age 6
(integer) 17
假如沒定義 直接賦值
(integer) 5
(integer) 9
127.0.0.1:6379> get str
"helloword"
bitop operation destkey key [key ...]
對乙個或多個儲存二進位制位的字串 key 進行位元操作,並將結果儲存到 destkey 上。operation 可以是 and 、 or 、 not 、 xor 這四種操作中的任意一種
除了 not 操作之外,其他操作都可以接受乙個或多個 key 作為輸入。
當 bitop 處理不同長度的字串時,較短的那個字串所缺少的部分會被看作 0 。
127.0.0.1:6379> setbit bit1 2 1 # bit1 001
(integer) 0
127.0.0.1:6379> setbit bit2 1 1 # bit2 011
(integer) 0
127.0.0.1:6379> setbit bit2 2 1
(integer) 0
127.0.0.1:6379> bitop and result bit1 bit2
(integer) 1
127.0.0.1:6379> getbit result 0
(integer) 0
127.0.0.1:6379> getbit result 1
(integer) 0
127.0.0.1:6379> getbit result 2
(integer) 1
bitcount key [start] [end]
計算給定字串中,被設定為 1 的位元位的數量。一般情況下,給定的整個字串都會被進行計數,通過指定額外的 start 或 end 引數,可以讓計數只在特定的位上進行。start 和 end 引數的設定可以使用負數值
不存在的 key 被當成是空字串來處理,因此對乙個不存在的 key 進行 bitcount 操作,結果為 0 。
127.0.0.1:6379> bitcount bit2
(integer) 2
127.0.0.1:6379> bitcount empty
(integer) 0
redis之資料結構 上
1.redis之key value對 key 在儲存redis記憶體中的資料起的變數名字 value value 的型別可以是string,list,set,sort set,hash.一般情況 key的命名規則是 鍵盤除了空格 換行外其他的大部分字元都可以使用。建議key不要太長,佔記憶體,也不要...
redis資料結構之字典
字典 dictionary 其實和符號表 symbol table 關聯陣列 associative array 對映 map 是乙個東東,都是為了儲存鍵值對 k v pair 的資料結構,屌屌噠。php中因為能很方便的用關聯陣列,因此能寫出很多實用高效的 有空一定要去好好了解下php的關聯陣列是如...
redis資料結構之List
在redis中,list型別是按照插入順序排序的字串鍊錶。和資料結構中的普通鍊錶一樣,我們可以在其頭部 left 和尾部 right 新增新的元素。在插入時,如果該鍵並不存在,redis將為該鍵建立乙個新的鍊錶。與此相反,如果鍊錶中所有的元素均被移除,那麼該鍵也將會被從資料庫中刪除。list中可以包...