zoukankan      html  css  js  c++  java
  • redis 常用基础命令

    Redis的数据结构

    redis是一种高级的key:value存储系统,其中value支持五种数据类型;
    1、字符串(strings)
    2、散列(hashes)
    3、列表(lists)
    4、集合(sets)
    5、有序集合(sorted sets)

     基础查询命令:

    # 基础信息
    info
    # 空间大小
    info keyspace
    # 查看DB
    config get databases
    #查询Redis的数据量
    dbsize
    #创建
    set key value
    # 模糊查询
    keys *
    # 删除
    del key
    # 清空整个 Redis 数据
    flushall
    # 清空当前库中的所有key
    flushdb

    通用命令:

    keys * [pattern]     // 遍历当前reids所有的key O(n)
    dbsize     // 计算key的总数 O(1)
    exists [key]     // 判断key是否存在 O(1)
    del [key...]     // 删除一个或多个指定的key O(1)
    expire key [seconds]     // key在seconds秒后过期 O(1)
    ttl [key]     // 查看key剩余的过期时间 O(1)
    persist [key]     // 去掉key的过期时间 O(1)
    type [key]     // 返回key的数据结构类型 O(1)

     String相关命令:

    get [key]     // 获取key对应的value O(1)
    mget [key1 ke2 ...]     // 批量获取key,原子操作 O(n)
    getset [key newValue]     // 设置key新值为newValue并返回旧的value O(1)
    getrange [key start end]     // 获取字符串指定下标所有的值 O(1)
    set [key value]     // 设置key-value O(1)
    setrange [key index value]     // 设置指定下标所有对应的值 O(1)
    mset [key1 value1 key2 value2 ...]     // 批量设置key-value O(n)
    append [key value]     // 将value追加到旧的value O(1)
    setnx [key value]     // key不存在,才设置 O(1)
    set [key value xx]     // key存在,才设置 O(1)
    setex [key value seconds]     // 设置key,同时设置过期时间 O(1)
    incr [key]     // key自增1,如果key不存在,自增后get(key)=1 O(1)
    decr [key]     // key自减1,如果key不存在,自减后get(key)=-1 O(1)
    incrby [key k]     // key自增k,如果key不存在,自增后get(key)=k O(1)
    incrbyfloat [key 3.5]     // 增加key对应的float值3.5 如需减法,传负值即可 O(1)
    decrby [key k]     // key自减k,如果key不存在,自减后get(key)=-k O(1)
    strlen [key]     // 返回字符串的长度(注意中文占用字节数的问题)O(1)

     Hash相关命令:

    hget [key field]     // 获取hash key对应的field的value O(1)
    hset [key field value]     // 设置hash key对应的field的value O(1)
    hdel [key field]     // 删除hash key对应的field的value O(1)
    hexists [key field]     // 判断hash key 是否有field O(1)
    hlen [key]     // 获取hash key field的数量,redis内部维护了这个值的计数,而不是每次遍历,效率高 O(1)
    hmget [key field1 field2 ...]     // 批量获取hash key的一批field对应的值 O(n)
    hmset [key field1 field2 ...]     // 批量设置hash key的一批field的value O(n)
    hincrby [key field count]     // 设置hash key的field字段自增count O(1)
    hincrbyfloat [key field float]     // hincrby的浮点数版 O(1)
    hgetall [key]     // 返回hash key对应所有的field和value O(n)
    hvals [key]     // 返回hash key对应所有field的value O(n)
    hkeys [key]     // 返回hash key对应的所有field O(n)
    hsetnx [key field value]     // 设置hash key对应的field的value 如过field存在,则失败 O(1)

     List相关命令:

    rpush [key value1 value2...valueN]     // 从列表右端(后端)插入值 (1-N个) O(1~n)
    lpush [key value1 value2...valueN]     // 从列表左侧(头部)插入值 (1-N个) O(1~n)
    linsert [key before|after value newValue]     // 在list指定的值(前 | 后)插入newValue,需要遍历 O(n)
    lpop [key]     // 从列表左侧弹出一个item O(1)
    rpop [key]     // 从列表右侧弹出一个item O(1)
    lrem [key count value]     // 根据count值,从列表中删除所有value相等的项 O(n)
    (1) count > 0,从左到右,删除最多count个与value相等的项
    (2) count < 0,从右到左,删除最多count个与value相等的项
    (3) count = 0,删除list中所有与value相等的项
    ltrim [key start end]     // 按照索引范围修剪列表 O(n)
    lrange [key start end]     // 获取list指定索引范围的所有item,end为-1时,取到末尾 O(n)
    lindex [key index]     // 获取list指定索引的item,index为-1,取最后一个item O(n)
    llen [key]     // 获取list长度,内部优化值 O(1)
    lset [key index newValue]     // 设置list指定索引值为newValue O(n)
    blpop [key timeout]     // lpop阻塞版本,timeout是阻塞超时时间,timeout=0为永不阻塞 O(1)
    brpop [key timeout]     // rpop阻塞版本,timeout是阻塞超时时间,timeout=0为永不阻塞 O(1)

     Set相关命令:

    sadd [key element]     // 向集合key添加element(如果element存在,添加失败) O(1)
    srem [key element]     // 将集合key中的element移除掉 O(1)
    scard [key]     // 计算集合大小 O(1)
    sismember [key value]     // 判断value是否在集合中
    srandmember [key count]     // 从集合中随机挑count个元素,只是选取,不会提出
    spop [key]     // 从集合中随机弹出一个元素
    smembers [key]     // 获取集合所有元素,返回结果无序,如果集合大小心使用
    sdiff [key1 key2]     // 取两个集合的差集
    sinter [key1 key2]     // 取两个集合的交集
    sunion [key1 key2]     // 取两个集合的并集
    sdiff | sinter | sunion + store destkey     // 将差集、交集、并集结果保存到destkey中

     Zset相关命令:

    zadd [key score element(可以是多对)]     // 向集合中添加score和element O(logN)
    zrem [key element(可以是多个)]     // 删除集合中元素 O(1)
    zscore [key element]     // 返回改元素的分数 O(1)
    zincrby [key increScore element]     // 增加或减少元素分数 O(1)
    zcard [key]     // 返回元素的总个数 O(1)
    zrank [key element]     // 返回element在集合中的排名,从小到大排
    zrevrank [key element]     // 返回element在集合中的排名,从大到小排
    zrange [key start end withscores]     // 获取指定排名范围的的元素和它的分数,可以不带withscores,即不打印分数 O(log(n)+m)
    zrevrange [key start end withscores]     // zrange的倒序版本
    zrangebyscore [key minScore maxScore withscores]     // 返回指定分数范围的升序元素 O(log(n)+m)
    zrevrangebyscore [key minScore maxScore withscores]     // zrangebyscore降序版本
    zcount [key minScore maxScore]     // 返回有序集合指定分数范围的元素个数 O(log(n)+m)
    zremrangebyrank [key start end]     // 删除指定排名内的升序元素 O(log(n)+m)
    zremrangebyscore [key minScore maxScore]     // 删除指定分数内的升序元素 O(log(n)+m)
    zinterstore     // 取两集合交集并存储
    zunionstore     // 取两集合并集并存储

     Bitmap相关命令:

    setbit [key offset value]     // 给位图指定索引设置值(0或1)注意offset偏移量设置,可能有较大耗时
    getbit [key offset]     // 获取位图指定索引的值
    bitcount [key start end]     // 获取位图指定范围内(start到end,单位为字节,如果不指定就是获取全部)值为1的个数
    bitop [op destkey key...]     // 做多个bitmap的and、or、not、xor操作,并将结果保存在destkey中
    bitpos [key targetBit start end]     // 计算位图指定范围(start到end,单位为字节,如果不指定就是获取全部)第一个偏移量对应的值等于targetBit(0或1)的位置

     HyperLoglog相关命令:

    pfadd [key element...]     // 向hyperloglog添加元素
    pfcount [key...]     // 计算hyperloglog的独立总数
    pfmerge [destkey sourcekey...]     // 合并多个sourcekey到destkey

     GEO相关命令(redis3.2版本):

    geoadd [key longitude latitude member ...]     // 增加一个或多个地理位置信息
    geopos [key member...]     // 获取一个或多个member的经纬度
    geodist [key member1 member2 unit]     // 按某个单位(unit:m、km、mi、ft)获取两个地理位置的距离
    georadius     // 功能参数太多,使用查api

     geo说明:

    type geoKey = zset 
    没有删除api:zrem key member
  • 相关阅读:
    SQLDirect 6.5 Source (Delphi 5-10.1 Berlin)
    中国自主X86处理器工艺跃进:国产28nm升级16nm(上海兆芯)
    底层库
    An Overview of Complex Event Processing2
    linux动态库编译和使用
    gulp
    Web前端性能优化
    ECLIPSE JSP TOMCAT 环境搭建
    项目架构mvc+webapi
    HTTP/1.1
  • 原文地址:https://www.cnblogs.com/sharesdk/p/14150344.html
Copyright © 2011-2022 走看看