Redis哈希类型数据结构的操作

哈希类型中的映射关系叫作field-value

1.设置值

1)hset

hset key field value

  • 新哈希字段成功则返回1
  • 哈希表中filed已存在且旧值已被新值覆盖则返回0
127.0.0.1:6379> hset myhash key1 name
(integer) 1

127.0.0.1:6379> hset myhash key1 user_name
(integer) 0

127.0.0.1:6379> hget myhash key1
"user_name"

2)hsetnx

hsetnx key field value

  • 为哈希表中不存在的字段赋值
  • key不存在,则进行创建,返回1
  • key存在则不做任何操作,返回0
127.0.0.1:6379> hsetnx myhash key1 user_name
(integer) 0
127.0.0.1:6379> hsetnx myhash key3 class_info
(integer) 1

3)hmset

hmset key field value [field value …]

  • 批量设置多个field-value
hmset myhash2 key1 date key2 age key3 num
OK

2.获取值

1)hget

hget key field

127.0.0.1:6379> hget myhash key1
"name"

2)hmget

hmget key field [field …]

  • 批量获取field-value
127.0.0.1:6379> hmget myhash key1 key2
1) "name"
2) "addr"

3)hgetall

hgetall key

  • 返回所有filed-value值,返回值的长度是哈希表大小的两倍
  • 如果哈希元素个数比较多,会存在阻塞redis的可能
  • 比较消耗CPU
127.0.0.1:6379> hgetall myhash
1) "key1"
2) "name"
3) "key2"
4) "addr"

4)hvals

hvals key

  • 获取所有value
127.0.0.1:6379> hvals myhash
1) "name"
2) "addr

5)hkeys

hkeys key

  • 返回指定哈希键所有的field
127.0.0.1:6379> hkeys myhash
1) "key1"
2) "key2"

3.计算

1)hlen

hlen key

  • 计算field个数
127.0.0.1:6379> hlen myhash
(integer) 2

2)hstrlen

hstrlen key field

  • 计算value的字符串长度
127.0.0.1:6379> hstrlen myhash key1
(integer) 9

4.判断field是否存在

hexists key field

  • 存在返回1,不存在返回0
127.0.0.1:6379> hexists myhash key1
(integer) 1
127.0.0.1:6379> hexists myhash key3
(integer) 0

5.设置增量
hincrby key field
hincrbyfloat key field

6.哈希类型命令时间复杂度

命令时间复杂度
hsetO(1)
hgetO(1)
hdelO(k),field总数
hlenO(1)
hgetallO(n),field总数
hmgetO(k),field总数
hmsetO(k),field总数
hexistsO(1)
hkeysO(n),field总数
hvalsO(n),field总数
hsetnxO(1)
hincrbyO(1)
hincrbyfloatO(1)
hstrlenO(1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值