redis 哈希表
redis 哈希表
前言
redis 哈希表相关操作命令
设值操作
hset 命令
hset hash field value 将 hash 中的 field 的值设置为 value,如果 hash 不存在,就会执行新增操作,如果已经存在,那就会覆盖原来的旧值。
127.0.0.1:6379> hset website google "www.google.cn"
(integer) 1
127.0.0.1:6379> hget website google
"www.google.cn"
127.0.0.1:6379> hset website google "www.gg.cm"
(integer) 0
127.0.0.1:6379> hget website google
"www.gg.cm"
hsetnx 命令
hsetnx hash field value 表示只有当 field 不存在时,才会设置为 value。如果已经存在,则不会设置新值。
127.0.0.1:6379> hsetnx database key-value-store redis
(integer) 1
127.0.0.1:6379> hget database key-value-store
"redis"
127.0.0.1:6379> hsetnx database key-value-store Redis
(integer) 0
127.0.0.1:6379> hget database key-value-store
"redis"
hget 命令
hget hash field 返回给定的 field 的值,如果 field 不存在,返回 (nil)。
127.0.0.1:6379> hset homepage redis redis.com
(integer) 1
127.0.0.1:6379> hget homepage reids
(nil)
127.0.0.1:6379> hget homepage redis
"redis.com"
hexists 命令
hexists hash field 查看对应的 field 是否存在。
127.0.0.1:6379> hexists phone iphone
(integer) 0
127.0.0.1:6379> hset phone iphone iphone 14 pro max
(error) ERR wrong number of arguments for 'hset' command
127.0.0.1:6379> hset phone iphone "iphone 14 pro max"
(integer) 1
127.0.0.1:6379> hexists phone iphone
(integer) 1
hdel 命令
hdel key field ... 删除哈希表中一个或者多个指定的 field,如果不存在则忽略。
127.0.0.1:6379> hset abbr a apple b banana c cat d dog
(integer) 4
127.0.0.1:6379> hgetall
(error) ERR wrong number of arguments for 'hgetall' command
127.0.0.1:6379> hgetall abbr
1) "a"
2) "apple"
3) "b"
4) "banana"
5) "c"
6) "cat"
7) "d"
8) "dog"
127.0.0.1:6379> hdel abbr a
(integer) 1
127.0.0.1:6379> hdel abbr not-exists-field
(integer) 0
127.0.0.1:6379> hdel abbr b c
(integer) 2
127.0.0.1:6379> hgetall abbr
1) "d"
2) "dog"
hlen 命令
hlen key 返回哈希表中 key 的数量。
127.0.0.1:6379> hset db redis redis.com mysql mysql.com
(integer) 2
127.0.0.1:6379> hlen db
(integer) 2
127.0.0.1:6379> hset db mongodb mongodb.org
(integer) 1
127.0.0.1:6379> hlen db
(integer) 3
hstrlen 命令
hstrlen key field 返回指定 hash 表中对应 field 的值的长度,如果不存在,返回 0。
127.0.0.1:6379> hmset myhash f1 helloworld f2 99 f3 -256
OK
127.0.0.1:6379> hstrlen myhash f1
(integer) 10
127.0.0.1:6379> hstrlen myhash f2
(integer) 2
127.0.0.1:6379> hstrlen myhash f3
(integer) 4
hincrby 命令
hincrby key field increment 在指定的 field 上加上 increment,可以为负数。如果 field 不存在,则先初始化值为 0,再加上 increment。
127.0.0.1:6379> hexists counter page_view
(integer) 0
127.0.0.1:6379> hincrby counter page_view 200
(integer) 200
127.0.0.1:6379> hincrby counter page_view 2
(integer) 202
127.0.0.1:6379> hget counter page_view
"202"
// 为负数时
127.0.0.1:6379> hincrby counter page_view -30
(integer) 172
127.0.0.1:6379> hget counter page_view
"172"
// 对字符串操作
127.0.0.1:6379> hset myhash string hello,world
(integer) 1
127.0.0.1:6379> hget myhash string
"hello,world"
127.0.0.1:6379> hincrby myhash string 1
(error) ERR hash value is not an integer
hincrbyfloat 命令
hincrbyfloat key field increment 在指定的哈希表 key 中 field 加上浮点数 increment。如果 field 不存在,设置为 0,然后再执行加法操作。
127.0.0.1:6379> hset mykey filed 10.50
(integer) 1
127.0.0.1:6379> hset mykey field 5.0e3
(integer) 1
127.0.0.1:6379> hincrbyfloat mykey field 2.0e2
"5200"
// 不存在的键执行
127.0.0.1:6379> exists price
(integer) 0
127.0.0.1:6379> hincrbyfloat price milk 3.5
"3.5"
127.0.0.1:6379> hgetall price
1) "milk"
2) "3.5"
// 对不存在的域执行
127.0.0.1:6379> hgetall price
1) "milk"
2) "3.5"
127.0.0.1:6379> hincrbyfloat price coffee 4.5
"4.5"
127.0.0.1:6379> hgetall price
1) "milk"
2) "3.5"
3) "coffee"
4) "4.5"
hmset 命令
hmset key field value 将多个键值对设置到 key 中,如果 key 已存在,则会覆盖原来的域。
127.0.0.1:6379> hmset website google www.google.com yahoo www.yahoo.com
OK
127.0.0.1:6379> hget websit google
(nil)
127.0.0.1:6379> hget websit yahoo
(nil)
127.0.0.1:6379> hget website google
"www.google.com"
127.0.0.1:6379> hget website yahoo
"www.yahoo.com"
hmget 命令
hmget key field 返回 key 中一个或者多个给定的 field,如果对应的 field 不存在,返回 nil,如果 key 不存在,返回 nil。
127.0.0.1:6379> hmget pet dog
1) (nil)
127.0.0.1:6379> hmset pet dog "one one" cat "maomao"
OK
127.0.0.1:6379> hmget pet dog cat fake_pet
1) "one one"
2) "maomao"
3) (nil)
hkeys 命令
hkeys key 返回 key 中所有的域,如果 key 不存在时,返回一个空表
127.0.0.1:6379> hkeys website
1) "google"
2) "yahoo"
127.0.0.1:6379> exists fake_key
(integer) 0
127.0.0.1:6379> hkeys fake_key
(empty array)
hvals 命令
hvals key 返回 key 对应的所有值,当不存在时,返回一个空表。
127.0.0.1:6379> hvals website
1) "www.google.com"
2) "www.yahoo.com"
127.0.0.1:6379> exists not_exists
(integer) 0
127.0.0.1:6379> hvals not_exists
(empty array)
hgetall 命令
hgetall key 返回 key 中所有的域和值,不存在返回空表。
127.0.0.1:6379> hgetall people
(empty array)
127.0.0.1:6379> hset people jack "Jack Sparrow"
(integer) 1
127.0.0.1:6379> hset people gump "Forrest Gump"
(integer) 1
127.0.0.1:6379> hgetall people
1) "jack"
2) "Jack Sparrow"
3) "gump"
4) "Forrest Gump"
1万+



被折叠的 条评论
为什么被折叠?



