zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    linux 杂类
    set
    C++ 基础 杂类
    linux 添加samba账户
    git 常用命令
    git 设置bitbucket 邮箱、用户
    C++ shared_ptr
    git 免密码配置
    2014的新目标
    为/Date(1332919782070)/转时间2013-09-23
  • 原文地址:https://www.cnblogs.com/evescn/p/13595348.html
Copyright © 2011-2022 走看看