Redis 五大数据类型(相关命令):https://redis.io/commands/
这里说的数据类型是value的数据类型,key的类型都是字符串。
5种数据类型:
Redis hash是一个键值对集合,是一个string类型的field和value的映射表,hash特别适合用于存储对象。类似于java里面的Map<String,Object>。
2.1、hset:设置多个field的值
hset key field value [field value ...]
将哈希表 key 中的域 field 的值设为 value 。
如果 key 不存在,一个新的哈希表被创建并进行 hset 操作。
如果域 field 已经存在于哈希表中,旧值将被覆盖。
返回值:
如果 field 是哈希表中的一个新建域,并且值设置成功,返回 1 。
如果哈希表中域 field 已经存在且旧值已被新值覆盖,返回 0 。
示例:
127.0.0.1:6379> flushdb #清空db,方便测试OK127.0.0.1:6379> hset user name ready age 30 #哈希表user中设置2个域:name和age,name的值为ready,age的值为30(integer) 2
2.2、hget:获取指定filed的值
hget key field
示例:
127.0.0.1:6379> flushdb #清空db,方便测试OK127.0.0.1:6379> hset user name ready age 30 #哈希表user中设置2个域:name和age,name的值为ready,age的值为30(integer) 2127.0.0.1:6379> hget user name #获取user中的name"ready"
2.3、hgetall:返回hash表所有的域和值
hgetall key
示例:
127.0.0.1:6379> flushdb #清空db,方便测试OK127.0.0.1:6379> hset user name ready age 30 #哈希表user中设置2个域:name和age,name的值为ready,age的值为30(integer) 2127.0.0.1:6379> hgetall user #获取user所有信息1) "name"2) "ready"3) "age"4) "30"
2.4、hmset:和hset类似(从4.0版本之后欧,此命令已弃用)
hmset key field value [field value ...]
2.5、hexists:判断给定的field是否存在,1:存在,0:不存在
hexists key field
查看哈希表 key 中,给定域 field 是否存在。
返回值:
如果哈希表含有给定域,返回 1 。
如果哈希表不含有给定域,或 key 不存在,返回 0 。
示例:
127.0.0.1:6379> flushdb #清空db,方便测试OK127.0.0.1:6379> hset user name ready age 30 #哈希表user中设置2个域:name和age,name的值为ready,age的值为30(integer) 2127.0.0.1:6379> hexists user name #user中存在name域(integer) 1127.0.0.1:6379> hexists user address #user中不存在address域,返回0(integer) 0127.0.0.1:6379> hexists user1 address #user1这个key不存在,返回0(integer) 0
2.6、hkeys:列出所有的filed
hkeys key
示例:
127.0.0.1:6379> flushdb #清空db,方便测试OK127.0.0.1:6379> hset user name ready age 30 #哈希表user中设置2个域:name和age,name的值为ready,age的值为30(integer) 2127.0.0.1:6379> hkeys user #获取user中的所有filed1) "name"2) "age"
2.7、hvals:列出所有的value
hvals key
示例:
127.0.0.1:6379> flushdb #清空db,方便测试OK127.0.0.1:6379> hset user name ready age 30 #哈希表user中设置2个域:name和age,name的值为ready,age的值为30(integer) 2127.0.0.1:6379> hvals user #获取user中的所有filed的值列表1) "ready"2) "30"
2.8、hlen:返回filed的数量
hlen key
返回哈希表 key 中域的数量。
返回值:
哈希表中域的数量。
当 key 不存在时,返回 0 。
示例:
127.0.0.1:6379> flushdb #清空db,方便测试OK127.0.0.1:6379> hset user name ready age 30 #哈希表user中设置2个域:name和age,name的值为ready,age的值为30(integer) 2127.0.0.1:6379> hlen user(integer) 2
2.9、hincrby:filed的值加上指定的增量
hincrby key field increment
为哈希表 key 中的域 field 的值加上增量 increment 。
增量也可以为负数,相当于对给定域进行减法操作。
如果 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。
如果域 field 不存在,那么在执行命令前,域的值被初始化为 0 。
对一个储存字符串值的域 field 执行 HINCRBY 命令将造成一个错误。
返回值:
执行 hincrby 命令之后,哈希表 key 中域 field 的值。
示例:
127.0.0.1:6379> flushdb #清空db,方便测试OK127.0.0.1:6379> hset siteInfo site itsoku.com pv 1000 #hash表siteInfo中有2个域:{site:"itsoku.com",pv:1000}(integer) 2127.0.0.1:6379> hget siteInfo pv #获取siteInfo中pv的值"1000"127.0.0.1:6379> hincrby siteInfo pv 10 #siteInfo中的pv值增加10(integer) 1010127.0.0.1:6379> hget siteInfo pv #获取siteInfo中的pv"1010"127.0.0.1:6379> hincrby siteInfo uv 500 #siteInfo中的uv值增加500,uv这个域不存在,则会先添加,然后再执行hincrby(integer) 500
2.10、hsetnx:当filed不存在的时候,设置filed的值
hsetnx key field value
将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在。
若域 field 已经存在,该操作无效。
如果 key 不存在,一个新哈希表被创建并执行 hsetnx 命令。
返回值:
设置成功,返回 1 。
如果给定域已经存在且没有操作被执行,返回 0 。
示例:
127.0.0.1:6379> flushdb #清空db,方便测试OK127.0.0.1:6379> hset user name ready age 30 #创建user,包含2个域:name、age(integer) 2127.0.0.1:6379> hsetnx user name tom #name已存在,设置失败,返回0(integer) 0127.0.0.1:6379> hget user name #name依旧是ready"ready"127.0.0.1:6379> hsetnx user address shanghai #address不存在,设置成功(integer) 1127.0.0.1:6379> hget user address #输出address的值"shanghai"
Hash类型对应的数据结构是两种:ziplist(压缩列表),hashtable(哈希表)。
当field-value长度较短个数较少时,使用ziplist,否则使用hashtable。
Hash常用操作:
电商购物车
购物车操作:
评论列表 (0条)