zoukankan      html  css  js  c++  java
  • Redis数据结构&命令手册

    Redis数据结构&命令手册

    Redis数据结构

      Redis可以存储键与5种不同数据结构之间的映射,这五种数据结构类型分别为STRING(字符串)、LIST(列表)、SET(集合)、HASH(散列)、ZSET(有序集合)。

      

    STRING字符串

    LIST列表

    SET集合

    HASH散列

    Order-set有序集合

    STRING字符串

    1.set

    set key value [ex 秒数]/[px 毫秒数] [nx]/[xx]
    作用:创建string类型数据类型键值对 例子: Set a
    1 ex 10:10秒有效 Set a 1 px 9000:9秒有效 注:ex,px不要同时写,否则以后面的有效期为准 Set a 1 ex 10 px 9000:实际有效期为9秒 nx:表示key不存在时,执行操作 Xx:表示key存在时,执行操作

    2.mset

    mset multi set :一次性设置多个键值
    作用:一次设置多个键值对 例子:mset key1 v1 key2 v2...

    3.get

    get key
    作用获取单个key的值

    4.mget

    mget key1 key2 ...
    作用获取多个key的值

    5.append

    append key value
    作用:把value追加到key的原值上

    6.setrange

    setrange key offset value
    作用把字符串的offset偏移字节改成value(替换)
    set word hello get word hello setrange word 2 ?? get word he??o 注意:如果偏移量》字符长度,该字符自动补0x00 set word hello setrange word 6get word hellox00!

    7.getrange

    getrange key start stop
    作用:获取字符串中【start,sop】范围的值
    注意:对于字符串的下标,左数从0开始,右数从-1开始
    
    set area chinese
    getrange area 1 4
    hine
    getrange area 0 -3
    Chine
    注意:
    1.start>=length,则返回空字符串
    2.stop>=length,则截取至字符结尾
    3.如果start所处位置在stop右边,返回空字符串

    8.getset

    getset key newvalue
    作用:获取并返回旧值,设置新值
    set status sleep
    getset status wakeup
    Sleep
    get status
    wakeup
    getset status working

    9.incr 

    incr key 
    作用:增加key的大小,增加1

    10.decr

    decr key 
    作用:减少key的大小,减少1

    11.decrby

    decrby key value
    作用:减少key的大小,减少value

    12.incrby

    incrby key value
    作用:增加key的大小,增加value

    13.incrbyfloat&decrbyfloat

    incrbyfloat key value
    作用:增加key的大小,增加value,value为float类型

    14.setbit

    setbit key offset value
    设置offset对应二进制位上的值
    返回:该位上的旧值
    注意:如果offset过大,则会在中间填充0
    Offset最大为2^32-1,可以推算出字符串的值最大为512M
    
    set char A
    setbit char  2 1
    get char
    a
    
    set char a
    setbit char  2 0
    get char
    A

    15.bitop

    bitop operation destkey key1 [key2 ...]
    作用:对key1,key2、keyN左operation,并将结果保存到destkey上
    operation可以是AND、OR、NOT、XOR

    LIST列表

      Redis对链表(linked-list)结构的支持使得它在键值存储的世界中独树一帜。一个列表可以有序地存储多个字符串。

    1.lpush

    lpush key value
    作用:在链表头部插入数据 lpush character a

    2.rpush

    rpush key value
    作用:在尾部插入数据 rpush character b

    3.lpop&rpop

    lpop key
    作用:返回并删除链表头的元素 rpop key
    作用:返回并删除链表尾的元素

    4.lrange

    lrange key start stop
    作用:返回链表中【start stop】的元素 注:左数从0开始,右数从
    -1开始
    例子: lrange character
    1 3

    5.lrem

    lrem key count value:从key链表中删除value值
    注:删除count的绝对值个value后结束
    Count>0 从表头删除
    Count<0 从表尾删除
    lrem key 2 a:从头开始删除两个a
    lrem key -2 a:从尾开始删除两个a

    6.ltrim

    ltrim key start stop
    作用:剪切key对应的链接剪切【start,stop】一段,并把该段重新赋给key

    7.lindex

    lindex key index
    作用:返回index索引上的值
    例子: lindex key
    2

    8.llen

    llen key 
    作用:返回链表长度

    9.linsert

    linsert key after|before search value
    在key链表中寻找search,并在search值前后,插入value
    注:如果在链表中有多个相同的值,一旦找到一个search后,命令就结束了,因此不会插入多个value
    rpush num 1 3 6 8 9
    linsert num before 3 2 
    1 2 3 6 8 9
    linsert num after  6 7
    1 2 3 6 7 8 9

    10.rpoppush

    rpoplpush source dest
    作用:将一个(source)链表尾部的元素删除并添加到另一个链表(dest)的头部
    例子: rpush task a b c d rpush job rpoplpush task job 场景:task
    +job完成安全的队列 1.rpoplpush task job 2.接收返回值,并做业务处理 3.如果成功,rpop job清除任务,如果不成功,下次从job里再次取任务

    11.brpop&blpop

    brpop,blpop key timeout
    等待弹出key的尾/头元素
    Timeout为等待超时时间
    如果timeout为0,一直等待
    场景:长轮询Ajax在线聊天

    SET集合

     Redis地集合和列表都可以存在多个字符串,它们之间的不同在于,列表可以存储多个相同的字符串,而集合则通过使用散列来保证自己存储的每个字符串都是各不相同的(这些散列表只有键,但没有与键相关联的值)

     Redis集合使用无序方式存储元素,所以用户不能使用列表那样,将元素推入集合的某一端,或者从集合的某一端弹出元素。

    集合的性质:

    1. 无序性
    2. 确定性:
    3. 唯一性

    :stringlink的命令中,可以通过range来访问string中的某个字符或某几个元素,但,因为集合的无序性,无法通过下标或范围来访问部分元素

    因此想访问元素,要么随机选一个,要么都选

    1.sadd

    sadd key value1 value2
    作用:创建集合并往集合key中增加元素

    2.srem

    srem value1 value2
    作用:删除集合中集为value1 value2的元素
    返回值:忽略不存在的元素后,真正删除掉的元素的个数

    3.spop

    spop key
    作用:返回并删除集合key中1个随机元素

    4.srandmember

    srandmember  key
    作用:返回集合key中随机的1一个元素

    5.sismember

    sismember key value
    作用:判断value是否key集合
    是返回1,否返回0

    6.srandmember

    srandmember key
    作用:返回集合key中随机的一个元素

    7.sismember

    sismember key value
    作用:判断value是否在key集合中
    是返回1,否返回0

    8.smembers

    smembers key
    作用:返回集合中的所有元素

    9.scard

    scard key
    作用:返回集合中元素的个数

    10.smove

    smove source dest value
    作用:把source中的value删除,并添加到dest集合中

    11.sinter

    Sinter key1 key2 key3
    作用::求出key1 key2 key3 三个集合中的交集,并返回
    例子:
    sadd s1 0 2 3 4
    sadd s2 0 5 8 9
    sadd s3 0 2 4 7
    sinter s1 s2 s3
    0

    12.sinterstore

    sinterstore dest key1 key2 key3
    作用:求出key1,key2,key3 三个集合中的交集,并赋值给dest

    13.suion

    suion key1 key2...keyn
    作用:求出key1,key2,keyn的并集,并返回

    14.sdiff

    sdiff key1 key2 key3
    作用:求出key1与key2,key3的差集

    HASH散列

    Redis的散列可以存储多个键值对之间的映射,和字符串一样,散列存储既可以是字符串又可以是数字值,并且用户同样可以对散列的数字值执行自增操作或者自减操作。

    1.hset

    hset key field value
    作用:把key中 field域的值设为value
    注:如果没有field域,直接添加,如果有,则覆盖原field域的值

    2.hmset

    hmset key field1 value1 [field2 value2 field3 value3 ......fieldn valuen]
    作用:设置field1->N个域。对应的值是value->N

    3.hget

    hget key field
    作用:返回key中的field域的值

    4.hmget

    hmget key field1 field2 fieldN
    作用:返回key中的field fieldN域的值

    5.hgetall

    hgetall key
    作用:返回key中所有域与其值

    6.hdel

    hdel key field
    作用:删除key中field域

    7.hlen

    hlen key
    作用:返回key中元素的数量

    8.hexists

    hexists key field
    作用:判断key中有没有field域

    9.hincrby

    hincrby key field value
    作用:是把key中的field域的值增长整型值value

    10.hincrbyfloat

    hincrbyfloat key field value
    作用:是把key中的field域增长浮点值value

    11.hkeys

    hkeys key
    作用:返回key中所有field

    12.kvals

    kvals key
    作用:返回key中所有value

    Order-set 有序集合

     

    有序集合和散列一样,都用于存储键值对:有序集合的键被称为成员(member),每个成员都是各不相同的;而有序集合的值则被称为分值(socre),分值必须为浮点数。

    有序集合是redis里面唯一一个既可以根据成员访问元素(这一点和散列一样),又可以根据分值以及分值的排列顺序来访问元素的结构。

    1.zadd

    zadd key score1 value1 score2 value2...
    作用:创建并添加元素
    例子: zadd
    class 12 lily 13 lucy 18 lie

    2.zrem

    zrem key value1 value2...
    作用:删除集合钟的元素

    3.zremrangebyscore

    zremrangebyscore key min max
    作用:按照socre来删除元素,删除score在[min,max]之间的元素

    4.zremrangebyrank 

    zremrangebyrank key start end
    作用:按排名删除元素,删除名次[start,end]之间的元素

    5.zrank

    zrank key member
    作用:查询member的排名(升序0名开始)

    6.zrevrank

    zrevrank key memeber
    作用:查询member的排名(降序0名开始)

    7.zrange

    zrange key start stop [withscores]
    作用:把集合排序后,返回名次[start stop]的元素
    默认是升序排列
    withscores:是把score也打印出来

    8.zrevrange

    zrevrange key start stop
    作用:把集合降序排序取名字[start,stop]之间的元素

    9.zrangbyscore

    zrangbyscore key min max [withscores] [limit offset N]
    作用:集合(升序)排序后取socre在[min,max]内的元素
    并跳过offset个,取出N个

    10.zcard

    zcard key
    作用:返回元素个数

    11.zcount

    zcount key min max
    作用:返回[min,max]区间内元素的数量

    12.zinterstore

    zinterstore destination numkeys key1 [key2...] 
    [WEIGHTS weight [weight ...]]
    [aggreagte sum|min|max]
    
    求key1,key2的交集,key1,key2的权重分别是weight1,weight2
    聚合方法:sum、min、max
    聚合的结果保存在dest集合内
    Numkeys:计算交集的key的个数
    weights,aggregate如何理解?
    如果有交集,交集元素又有score,score怎么处理?
    
    
    zadd lisi 3 cat 5 dog 6 horse
    zadd wang 2 cat 4 dog 8 horse 1 donkey
    zinterstore result 2 lisi wang 
    zrange result 0 -1 [withscores]
    
    zinterstore result 2 lisi wang aggregate min
    zrange result 0 -1 [withscores]
    
    zinterstore result 2 lisi wang aggregate max
    zrange result 0 -1 [withscores]
  • 相关阅读:
    BZOJ4503 两个串
    【挖坟】HDU3205 Factorization
    webpack打包 The 'mode' option has not been set, webpack will fallback to
    echarts js报错 Cannot read property 'getAttribute' of null
    微信支付 get_brand_wcpay_request fail,Undefined variable: openid
    layui动态设置checbox选中状态
    layui 获取radio单选框选中的值
    js 获取数组最后一个元素
    js生成指定范围内的随机数
    layer重复弹出(layui弹层同时存在多个)的解决方法
  • 原文地址:https://www.cnblogs.com/-wenli/p/10926626.html
Copyright © 2011-2022 走看看