接上文: Redis 基本命令大全 一(key,string,list)
Redis 基本命令大全 二
四 Redis 哈希(Hash)
4.1hset
HSET 命令用於爲hash表中的字段賦值
如果hash表不存在,那麼一個新的hash表將被創建,並執行hset操作
如果key已經存在hash表中,那麼將執行覆蓋操作
語法:
hset keyName field value
返回值:
如果field是hash表中新建的一個字段,並設置成功返回1
如果field已經存在,並且value覆蓋成功,返回0
實例:
127.0.0.1:6379[3]> hset mymap mykey chinese //mymap是這個map的名字,mykey是這個map中field的名字 chinese 是這個field的值
(integer) 1
127.0.0.1:6379[3]> hset mymap mykey english
(integer) 0 //這裏english覆蓋了chinese 所以返回0
127.0.0.1:6379[3]> hset mymap mykey2 france //這是mymap中的另一個字段 mykey2 一個hash可以存多個field- value 鍵值對
(integer) 1
4.2 hkeys
HKEYS 命令用於獲取hash表中所有的字段名
語法:
hkeys key
返回值:
返回hash表中所有字段field的列表
實例:
127.0.0.1:6379[3]> hkeys mymap
1) "mykey"
2) "mykey2"
4.3 hvals
HVALS 命令用於獲取hash表中所有的value值
語法:
hvals key
返回值:
返回hash表中所有value值的列表
實例:
127.0.0.1:6379[3]> HVALS mymap
1) "english"
2) "france"
4.4 hmset
HMSET 命令用於同時將多個field- value對設置到hash表中
如果hash表不存在,那麼一個新的hash表將被創建,並執行hmset操作
如果field已經存在hash表中,那麼將執行覆蓋操作
語法:
hmset keyName field1 value field2 value2 ...
返回值:
OK
實例:
127.0.0.1:6379[3]> hmset country ch chinese en english
OK
4.5 hsetnx
HSETNX 命令用於爲hash表中不存在的key賦值
如果hash表不存在,那麼一個新的hash表將被創建,並執行hset操作
如果key已經存在hash表中,操作無效
語法:
hsetnx keyName field value
返回值:
設置成功返回1
field已經存在,操作無效返回0
實例:
127.0.0.1:6379[3]> hsetnx country us america
(integer) 1
127.0.0.1:6379[3]> hsetnx country us unitedstates
(integer) 0 //us已經存在,操作無效返回0
//reids 命令中尾部帶有nx 的,比如***nx,setnx hsetnx 這樣的命令都是希望爲新的key賦值,而不是覆蓋原有的值
4.6 hget
HGET 命令用於獲取hash表中指定字段的值
語法:
hget keyName fieldName
返回值:
返回指定field的值
如果field不存在,返回nil
實例:
127.0.0.1:6379[3]> hget country ch
"chinese"
4.7 hmget
HMGET 命令用於獲取hash表中一個或多個字段的值
如果指定字段不存在,返回一個nil值
語法:
hmget keyName fieldName1 fieldName2 ...
返回值:
返回一個報錯指定字段的值的列表
實例:
127.0.0.1:6379[3]> hmget country ch en fa
1) "chinese"
2) "english"
3) (nil) //fa不存在 返回nil
4.8 hgetall
HGETALL 命令用於獲取hash表中所有字段的值
語法:
hgetall keyName
返回值:
返回hash表中所有的字段和值
實例:
127.0.0.1:6379[3]> hgetall country
1) "ch" //這裏是字段ch
2) "chinese" //這裏是ch 的value
3) "en" //這裏是字段en
4) "english" //這裏是en的value
5) "us" //奇數位出現的字段名
6) "america" //偶數位出現的是字段值
4.9 hesists
HESISTS 命令用於查看hsah表中指定的字段是否存在
語法:
hesists keyName field
返回值:
字段存在返回1
字段不存在返回0
實例:
127.0.0.1:6379[3]> hgetall country
1) "ch" //這裏是字段ch
2) "chinese" //這裏是ch 的value
3) "en" //這裏是字段en
4) "english" //這裏是en的value
5) "us" //奇數位出現的字段名
6) "america" //偶數位出現的是字段值
4.10 hincrby
HINCRBY 命令用於爲hash表中的字段增加指定的增量值
增量值可以爲負數,就相當於減法操作,但只能爲整數
如果key不存在一個新的hash表將被創建並執行hincrby命令
如果field不存在,字段的初始值會爲0
語法:
hincrby key field num
返回值:
執行incrby命令後字段的值
實例:
127.0.0.1:6379[3]> hincrby info age 20
(integer) 20
127.0.0.1:6379[3]> hincrby info age 1
(integer) 21
4.11 hincrbyfloat
HINCRBY 命令用於爲hash表中的字段增加指定的浮點數增量值
增量值可以爲負數,就相當於減法操作
如果key不存在一個新的hash表將被創建並執行hincrbyfloat命令
如果field不存在,字段的初始值會爲0
語法:
hincrbyfloat key field num
返回值:
執行incrbyfloat命令後字段的值
實例:
127.0.0.1:6379[3]> HINCRBYFLOAT info age 0.5
"21.5" //incrbyfloat命令與incrby命令相似,只不過可以操作浮點數
五 Redis 集合(Set)
reids中set和list的功能相似,list允許重複,set不允許重複。另外list是有下標的,set並沒有
sadd
SADD 命令用於將一個或多個成員加入到集合中,已存在於集合中的元素將被忽略
語法:
sadd kyeName member1 member2 ...
返回值:
被添加到集合中的新元素的數量,不包括沒有加入成功的
實例:
127.0.0.1:6379[3]> sadd myset zhangsan lisi wangwu zhaoliu zhangsan
(integer) 4 //返回值爲4 ,只有zhangsan lisi wangwu zhaoliu成功了 最後一個zhangsan因爲和第一個張三重複了,所以沒有加入成功
srem
SREM 命令用於移除集合中一個或多個成員,未存在集合中的元素將被忽略
語法:
srem keyName member1 member2 ...
返回值:
被移除元素的數量,不包括被忽略的
實例:
127.0.0.1:6379[3]> srem myset zhaoliu xiaoming
(integer) 1 //只有zhaoliu移除成功了,所以返回1
smembers
SMEMBERS 命令用於返回集合中所有的元素
語法:
smembers keyName
返回值:
集合中的所有成員
不存在的集合被視爲空集合
實例:
127.0.0.1:6379[3]> smembers myset
1) "zhangsan"
2) "zhaoliu"
3) "wangwu"
4) "lisi"
srandmember
SRANDMEMBER 命令用於返回集合中一個隨機的元素
從 Redis 2.6 版本開始, Srandmember 命令接受可選的 count 參數:
count爲正數時那麼返回一個包含count個元素的集合,如果count大於數組長度,那麼返回整個數組
count爲負數時,返回一個數組數組中的元素可能重複,數組長度爲count的絕對值
語法:
srandmember keyName [count]
返回值:
只提供一個參數時,隨機返回集合中的一個元素
提供count參數時返回一個數組
實例:
127.0.0.1:6379[3]> SRANDMEMBER myset
"zhangsan" //不提供count參數,隨機返回一個元素
127.0.0.1:6379[3]> SRANDMEMBER myset 2
1) "wangwu"
2) "lisi" //提供count參數,返回count個元素
127.0.0.1:6379[3]> SRANDMEMBER myset -3
1) "wangwu"
2) "zhaoliu"
3) "wangwu" //count爲負數,可能出現重複
smove
SMOVE 命令用於將指定元素從source集合移動到destination集合
smove時原子操作
如果source集合不存在或者member元素不存在,smove命令不執行任何操作,返回0
如果destination集合中包含member元素,smove命令只是簡單的刪除source集合中的member元素
語法:
smove source destination member
返回值:
如果元素移除成功,返回1
如果source集合中不存在member,或者不存在source集合,操作無效,返回0
實例:
127.0.0.1:6379[3]> smove myset myset2 lisi
(integer) 1
sismember
SISMEMBER 命令用於判斷元素是否存在於集合中
語法:
sismember keyName member
返回值:
如果元素存在於集合中,返回1
如果集合不存在,或者元素不存在於集合中,返回0
實例:
127.0.0.1:6379[3]> sismember myset zhangsan
(integer) 1
127.0.0.1:6379[3]> sismember myset chenzhen
(integer) 0
spop
SPOP 命令用於移除並返回一個集合中的隨機元素
語法:
spop keyName
返回值:
返回被移除的元素
如果集合不存在或者集合爲空,返回nil
實例:
127.0.0.1:6379[3]> spop myset
"zhangsan"