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