redis 支持的數(shù)據(jù)類型
redis 支持以下五種數(shù)據(jù)類型顺饮,其中比較常用的是哈希(Hash)和字符串(String)四敞。
- 字符串(String)
- 字符串列表(List)
- 有序字符串集合(Sorted set)
- 哈希(Hash)
- 字符串集合(Set)
同時和橙,redis是Key-Value形式的數(shù)據(jù)庫妹懒。因此篓叶,在使用redis時對Key定義注意以下幾點:
- 不要太長艺玲,不超過1024字節(jié)肋僧,這不僅會降低查詢效率斑胜,同時會消耗內(nèi)存
- 不要太短,可讀性差嫌吠,使用Key設(shè)置為x
- 同一項目中止潘,命名盡量統(tǒng)一規(guī)范
存儲String類型
字符串在redis中是使用二進制形式存儲,其中value最大支持數(shù)據(jù)的長度為:512M辫诅。對于字符串操作常用命令有:
- 賦值:set
- 取值:get
- 先取值再賦值:getset
- 刪除:del
- 數(shù)值增減:incr / decr
- 擴展:incrby / decrby凭戴,append
127.0.0.1:6379> set name jack
OK
127.0.0.1:6379> get name
"jack"
127.0.0.1:6379> getset name tom // 先取出原有name的值,再設(shè)置新值為tom
"jack"
127.0.0.1:6379> get name
"tom"
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> set age 10
OK
127.0.0.1:6379> incr age // 遞增
(integer) 11
127.0.0.1:6379> get age
"11"
127.0.0.1:6379> decr age // 遞減
(integer) 10
127.0.0.1:6379> get age
"10"
incr和decr命令只能操作整形數(shù)據(jù)炕矮,如果操作的key不存在么夫,則會先創(chuàng)建對應(yīng)key,再初始化值為0再遞增1肤视。如果操作的key不能轉(zhuǎn)換成整形時档痪,將報錯誤信息。
127.0.0.1:6379> get number
(nil)
127.0.0.1:6379> incr number
(integer) 1
127.0.0.1:6379> get number
"1"
127.0.0.1:6379> set name hello
OK
127.0.0.1:6379> get name
"hello"
127.0.0.1:6379> incr name
(error) ERR value is not an integer or out of range
127.0.0.1:6379>
incrby和decrby命令是增加/減少指定的值
127.0.0.1:6379> incrby number 1000
(integer) 1001
127.0.0.1:6379> get number
"1001"
127.0.0.1:6379> decrby number 5
(integer) 996
127.0.0.1:6379> get number
"996"
append:拼接字符邢滑,返回的為字符串的長度
127.0.0.1:6379> append name world
(integer) 10
127.0.0.1:6379> get name
"helloworld"
127.0.0.1:6379>
存儲Hash
redis中的Hash類型是字符串與字符串之間的映射腐螟,適合存儲值對象的信息,比如用戶名,密碼乐纸,年齡……常用指令有:
- hset
- hget
- hmset
- hmget
- hgetall
- hvals
- hdel
- hexists
127.0.0.1:6379> hset user username admin // 設(shè)置對象的屬性
(integer) 1
127.0.0.1:6379> hget user username // 獲取對象的屬性
"admin"
127.0.0.1:6379> hmset user age 21 sex 0
OK
127.0.0.1:6379> hmget user age sex username // 批量設(shè)置key衬廷、value
1) "21"
2) "0"
3) "admin"
127.0.0.1:6379> hgetall user // 獲取對象的所有key
1) "username"
2) "admin"
3) "age"
4) "21"
5) "sex"
6) "0"
127.0.0.1:6379> hvals user // 獲取對象所有value
1) "admin"
2) "21"
3) "0"
127.0.0.1:6379> hdel user age // 刪除對象的屬性
(integer) 1
127.0.0.1:6379> hget user age
(nil)
127.0.0.1:6379> hexists user password // 判斷屬性是否存在
(integer) 0
127.0.0.1:6379> hexists user username
(integer) 1