zoukankan      html  css  js  c++  java
  • Redis数据结构之字符串、哈希结构常用命令

    1、redis基本数据结构之字符串

    字符串是redis中最基本的数据结构,是key-value的形式存储数据。
    字符串常用基本命令如下表所示:

    命令 说明 备注
    set key value 设置键值对 最常用的写入命令。
    get key 通过键获取value值 最常用的读取命令。
    del key 通过key删除键值对 删除命令,返回删除数,需要注意的是:它是一个通用的命令,也就是说在其他数据结构中也可以使用。
    strlen key 求key指向的字符串的长度 返回长度
    getset key value 修改原来key对应的value值,并将旧值返回 如果原来的值为空,则返回空,并设置新值
    getrange key start end 获取子串 记字符串长度为len,把字符串看成是一个数组,redis是以0开始计数的,因此start是从0开始,end是len-1。
    append key value 追加字符串到原来的字符串的末尾 返回key指向的新字符串的长度。

    可以使用flushdb删除redis中的存储内容,但是一定要慎用。

    演示如下图所示:

    如果存储的字符串是数字(整数或浮点数),redis还支持简单的运算,如加减法。
    如下表所示:

    命令 说明 备注
    incr key 在原字段上加1 只能对整数操作
    incrby key increment 在原字段上加上整数(increment) 只能对整数操作
    decr key 在原字段上减1 只能对整数操作
    decrby key increment 在原字段上减去整数(increment) 只能对整数操作
    incrbyfloat key increment 在原字段上加上浮点数(increment) 可以操作浮点数或整数

    演示如下:

    2、redis基本数据结构之哈希

    redis中哈希结构就如同java中map一样,一个对象里面有许多键值对,它是特别适合用来存储对象的,如果内存足够大,那么一个redis的哈希结构可以存储2的32次方-1个键值对(40多亿)。在redis中,hash是一个String类型的field和value的映射表。
    映射表如下结构:

    其中role_1代表的是这个hash结构在redis内存中的key,通过这个key就可以找到这个hash结构,而hash结构是由一系列的field和value组成的。
    redis hash结构命令如下表所示:

    命令 说明 备注
    hdel key field1 [field2 ....] 删除hash结构中的某个(些)字段 可以进行多个字段的删除
    hexists key field 判断hash结构中是否存在field字段 存在返回1,否则返回0
    hgetall key 获取所有hash结构中的键值 返回键和值
    hincr key field increment 指定给hash结构中的某个字段加上一个整数 要求该字段是一个整数字符串
    hincrbyfloat key field increment 指定给hash结构中的某个字段加上一个浮点数 要求该字段是一个数字型字符串
    hkeys key 返回hash中所有的键
    hlen key 返回hash中键值对的数量
    hmget key field1[field2...] 返回hash中指定的键的值,可以是多个 依次返回值
    hmset key field1 value1[field2 value2] hash结构设置多个键值对
    hset key field value 在hash结构中设置键值对 单个设置,m表示多个的意思
    hsetnx key field value 当hash结构中不存在对应的键才设置值
    hvals key 返回hash结构中所有的值

    可以看出redis中hash结构和字符串结构有着明显的不同,hash结构命令是以h开头的表示hash结构,另外大多数命令多了一个field域,这是hash结构的一个内部键,也就是说redis需要通过key索引找到对应的hash结构,然后在通过field来确定使用hash结构的那个键值对。
    演示如下所示:

  • 相关阅读:
    使用部分函数时并未include其所在头文件,但是能编译成功且能运行,为什么?
    ubuntu开发机所需工具,做个记录,不断补充
    c cpp编程用到的系统边角与其拾遗
    几个递进的make file
    可以用命令行控制eclipse断点增加删除、远程调试创建与启动的插件
    Mac 从睡眠恢复后没有声音的问题
    [netty4][netty-handler]netty之idle handler处理
    《将博客搬至CSDN》
    python2与python3中__metacalss__的不同用法
    python3 type和object的关系
  • 原文地址:https://www.cnblogs.com/jasonboren/p/13027664.html
Copyright © 2011-2022 走看看