接上文: 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"