Redis 数据获取命令

Redis 数据获取命令

GET

GET key
起始版本:1.0.0

返回key的value。如果key不存在,返回特殊值nil。
如果key的value不是string,就返回错误,因为GET只处理string类型的values。

返回值

simple-string-reply:key 对应的value,或者nil(key不存在时)
  • 例子
redis> GET nonexisting
(nil)

redis> SET mykey "Hello"
OK

redis> GET mykey
"Hello"

SET

SET key new_value
起始版本:1.0.0

将键key设定为指定的“字符串”值。
如果 key 已经保存了一个值,那么这个操作会直接覆盖原来的值,并且忽略原始类型。
当set命令执行成功之后,之前设置的过期时间都将失效

  • 例子
redis> SET mykey "Hello"
OK

redis> GET mykey
"Hello"

HGET

HGET key field
起始版本:2.0.0

返回 key 指定的哈希集中该字段所关联的值

返回值
bulk-string-reply:该字段所关联的值。当字段不存在或者 key 不存在时返回nil。
  • 例子
redis> HSET myhash field1 "foo"
(integer) 1

redis> HGET myhash field1
"foo"

redis> HGET myhash field2
(nil)

HSET

HSET key field value
起始版本:2.0.0


设置 key 指定的哈希集中指定字段的值。
如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联。
如果字段在哈希集中存在,它将被重写。

返回值
integer-reply:含义如下

1如果field是一个新的字段
0如果field原来在map里面已经存在
  • 例子
redis> HSET myhash field1 "Hello"
(integer) 1

redis> HGET myhash field1
"Hello"

层级关系、目录形式数据

使用 redis 存储数据的时候,有时候为了查看的方便,通常会有层级或者说是目录,
这时候我们在set的时候,需要将key值使用 “:” 的符号来区分层级关系,
比如:set("a:b", "123"),
那么在 redis 中就是 a 目录下的 key值 为 b 的 value 为 123。
  • 存储数据
SET("a:b", "123")

HSET "a:b" c "Hello"
  • 获取数据
GET a:b

HGET a:b c

查询数据中遇到的问题

  • 查询数据报错
WRONGTYPE Operation against a key holding the wrong kind of value
  • 这个错误说明了用的redis方法与redis服务器中存储数据的类型存在冲突。
例如:数据库中有一个key的数据存储的是Hash类型的,但是使用redis执行数据操作的时候却使用了非Hash的操作方法。此时就会报

WRONGTYPE Operation against a key holding the wrong kind of value这个错误!
  • 问题解决:
# 先执行一条如下命令:
redis 127.0.0.1:6379>type key

# 此时会显示出该key存储在现在redis服务器中的类型,例如:
redis 127.0.0.1:6379>hash

# 则表示key为以hash类型存储在redis服务器里的,此时操作这个数据就必须使用hset、hget等操作方法。

如果是zset如下:

redis 127.0.0.1:6379>zset

则表示数据类型为Sorted Sets的。此时就需要使用zadd、zrange等操作方法,否则就会报WRONGTYPE Operation against a key holding the wrong kind of value这个错误!

参考文档

https://www.cnblogs.com/jeffen/p/6091385.html
https://blog.csdn.net/tonvchong/article/details/11526237

http://redis.cn/commands.html
posted @ 2020-09-01 11:54  evescn  阅读(10371)  评论(0编辑  收藏  举报