天天看點

Redis學習筆記之字元串和哈希指令字元串哈希

字元串

字元串類型是Redis最基礎的資料結構。首先鍵都是字元串類型,而且其他幾種資料結構都是在字元串類型基礎上建構的,字元串類型的值可以是字元串(簡單的字元串、複雜的字元串(JSON、XML))、數字,甚至是二進制(圖檔、音頻、視訊),但是值最大不能超過512MB。

1.設定值

set key value [EX seconds|PX milliseconds] [NX|XX] [KEEPTTL]

set指令有幾個選項:

ex seconds:為鍵設定秒級别過期時間。

px milliseconds:為鍵設定毫秒級别過期時間。

nx:鍵必須不存在,才可以設定成功,用于添加。

xx:于nx相反,鍵必須存在,才可以設定成功,用于更新。

keepttl:取消鍵的過期時間。

除了set選項,Redis還提供了setex和setnx兩個指令:

setex key seconds value

setnx key value

它們的作用和ex和nx選項是一樣的。

2.擷取值

get key

3.批量設定值

mset key value [key value ...]

4.批量擷取值

mget key [key ...]

5.計數

incr key

incr指令用于對值做自增操作,傳回結果分為三種情況:

值不是整數,傳回錯誤。

值是整數,傳回自增後的結果。

鍵不存在,按照值為0自增,傳回結構為1。

除了incr自增指令,Redis還提供了decr自減、incrby自增指定數字、decrby自減指定數字、incrbyfloat自增浮點數指令:

decr key

incrby key increment

decrby key decrement

incrbyfloat key increment

哈希

在Redis中,哈希類型是指鍵值本身又是一個鍵值對結構,形如value={{field1,value1},…{fieldN,valueN}}。哈希類型中的映射關系叫做field-value,注意這裡的value是指field對應的值,不是鍵對應的值。

hset key field value

下面為user:1添加一對field-value:

192.168.211.131:7002> hset user:1 name tom

-> Redirected to slot [10778] located at 192.168.211.131:7004

(integer) 1

hset也可以批量設定:

192.168.211.131:7004> hset user:1 dept dba sal 1000

(integer) 2

此外Redis提供了hsetnx指令,它的作用和setnx指令一樣,隻不過作用域由鍵變為field。

下面為user:1添加新的一對filed-value

192.168.211.131:7004> hsetnx user:1 mgr jim

hget key filed

下面操作擷取user:1的name域對應的值:

192.168.211.131:7004> hget user:1 name

"tom"

3.删除field

hdel key field [field ...]

hdel會删除一個或多個field,傳回結果為成功删除field的個數,例如:

192.168.211.131:7004> hdel user:1 mgr

4.計算field個數

hlen key

擷取user:1的field個數:

192.168.211.131:7004> hlen user:1

(integer) 3

5.批量設定或擷取field-value

hmset key field value [field value ...]

hmget key field [field ...]

hmset和hmget分别是批量設定和擷取field-value,例如:

192.168.211.131:7004> hmset user:2 name jim dept dba sal 5000 mgr null

OK

192.168.211.131:7004> hmget user:2 name dept sal mgr

1) "jim"

2) "dba"

3) "5000"

4) "null"

6.判斷field是否存在

192.168.211.131:7004> hexists key field

user:1包含name域,是以傳回結果為1,舉例:

192.168.211.131:7004> hexists user:1 name

7.擷取所有field

hkeys key

hkyes指令應該叫hkeys field更為恰當,擷取user:1的所有filed:

192.168.211.131:7004> hkeys user:1

1) "name"

2) "dept"

3) "sal

8.擷取所有value

hvals key

擷取user:1的所有value:

192.168.211.131:7004> hvals user:1

1) "tom"

3) "1000"

9.擷取所有的filed-value

hgetall key

擷取user:1所有的field-value:

192.168.211.131:7003> hgetall user:1

2) "tom"

3) "dept"

4) "dba"

5) "sal"

6) "1000"

10.hincrby hincrbyfloat

hincrby key field increment

hincrbyfloat key field increment

hincrby和hincrbyfloat,就像incrby和incrbyfloat指令一樣,但是他們的作用域是field。

11.計算value的字元串長度

hstrlen key field

例如user:1 name的value是tom,那麼hstrlen的傳回結果是3:

192.168.211.131:7004> hstrlen user:1 name