• redis--基本命令


     

    redis的value有五种类型,每个类型有对应的方法

    type key                    描述这个key对应的value的类型

    object encoding key               这个key对应的value操作过的类型

     

     

      String组操作:(字符串/字节数组、数值、位)

        字符串:

          set key value                设置值

          get key                    获取值

          set key value nx                当key不存在时设置(只能新建,分布式锁时用)

          set key value xx                 当key存在时才能设置(只能更新)

          mset key1 value1 key2 value2 key3 value3 ...    多个key设置

          mget key1 key2 key3             多个key获取

          msetnx key value key value ...         多个设置,所有的key都不存在时设置成功,原子性操作(有一个setnx失败了,全部失败)

          append key xxx               追加xxx

          getrange key start end             获取索引从start到end的值

                                  可以使用正向索引和方向索引,例如:          abcdefg,正向索引为:0123456,反向索引为-7-6-5-4-3-2-1

          setrange key start xxxx             把索引为start以后的值替换为xxxx

          strlen key                  获取字符串的长度

          getset key value               更新新的值,返回老的值

        数值:

          incr key                   加1,如果key不存在,那么就是1

          incrby key x                    加x

          decr key                     减1

          decrby key x                   减x

        bitmap:

      二进制位示意图

          setbit key offset value              offset:二进制位索引的偏移量,而不是字节索引的偏移量

                                 例如:setbit k1 1 1  的结果:01000000    因为这个二进制,一个二进制就可以表示,所以strlen k1为1

     

          bitpos key bit start end            查找某bit(0或者1),在二进制(字节索引范围)中第一次出现的位置(二进制位索引)

                                    例如:现有 k1 的二进制为: 01000001 01000000

                                 bitpos k1 1 0 0 :代表查找k1中字节索引为0-0范围内第一次出现的1的二进制位索引:1

                                 bitpos k1 1 1 1:代表查找k1中字节索引为1-1范围内第一次出现的1的二进制位索引:9

     

          bitcount key start end             统计二进制位1的个数

      

          bitop operation destkey key          按位操作,operation:操作,and  or   ,destkey:操作后的目标key    key: 参与运算的key

                                   例如,现有k1:   01000001 

                                     和k2:   01000010 

                                   如果执行: bitop and andresult k1 k2  那么andresult的二进制结果为:    01000000 (与运算,遇0则0,全1为1)

                                   如果执行: bitop or orresult k1 k2             那么orresult的二进制结果为:    01000011(或运算,有1则1)

      

            使用场景:

              1.统计用户登录天数:

          

              2.电商系统统计活跃用户:

              

            

      

      list操作:

          特点:不去重,插入和弹出有序

             链表,key里面包含第一个元素head和最后一个元素tail  

                当同向命令(左边存左边弹出/右边存右边弹出)时,后进先出         栈

                    当反向命令(左边存右边出/右边存左边出)时,先进先出      队列

             lindex    lset    根据下标获取和设置              数组

             blpop   brpop                          阻塞     先阻塞的单有元素的时候先拿到元素     单播队列    

            

          lpush key value ...                  从左边存入

          lpop key                       从左边弹出一个元素

          rpush key value ...                  从右边存入

          rpop key                       从右边弹出一个元素

          lrange key start end                    获取start-end区间的元素(支持反向索引)

          lindex key index                     获取下标为index的元素(支持反向索引)

          lset key index element                设置下标为index的元素为element

          lrem key count element                 删除count个element元素,

                                        当count为正数时,从左边开始查找count个删除

                                        当count为负数时,从右边开始查找count个删除

          linsert key before | after pivot element          在pivot前面(before)或者后面(after)插入

          llen key                        获取元素个数

          blpop key timeout                  从左边弹出一个元素,如果没有数据,那么最多阻塞timeout秒

          brpop key timeout                  从右边弹出一个元素,如果没有数据,那么最多阻塞timeout秒     

          ltrim key start stop                  删除start左边的和stop后边的元素,只保留中间的                    

        

      hash操作:(可以把hash理解为对象,每个key都是这个对象的属性)

          hset key field value                  设置值

          hget key field                      获取值

          hmset key     field value     field value     ...        多值设置 

          hmget key     field field field ...               多值获取

          hsetnx key field value                   当某field 存在时设置成功

          hkeys key                        获取所有的field

          hvals key                         获取所有的value

          hincrby key field increment               数字运算加increment,increment可以为负数

          hincrbyfloat key field increment            浮点数运算   

     

     

      set操作:

        特点:去重   不维护插入顺序

          

          sadd key member ...                  添加一个或多个元素

          scard key                        获取元素个数

          spop  key                        随机弹出一个元素

          smembers key                     获取所有的元素

          sismember key member                 查询member是否是set中的一个元素

          srem key member ...                  删除一个或多个元素

          

        集合操作:

          sinter k1 k2                      获取k1和k2的交集

          sinterstore result k1 k2                  获取k1和k2的交集,并存入result目标集合中

          sunion k1 k2                       获取k1和k2的并集

          sunionstore result k1 k2                获取k1和k2的并集并存入结果集(result)中

          sdiff k1 k2                        k1-k2的差集,注意有顺序问题,一定是前面的-后面的差集

     

          srandmember   key   count                获取随机元素,

                                      当count为正数且小于元素总数时,会返回个数为count的不重复的结果集

                                      当count为正数且大于元素总数时,有几个元素返回几个元素,不会达到count个

                                      当count为负数时,一定会返回count个元素,且可能重复

          

          

     

      sorted  set

         特点:有序的

            物理内存,左小右大,不随命令发生变化

            多了一个score(分值)维度,这个分值是sorted set用于排序的依据

     

        zadd key     score member     score member          添加元素,同时设置元素的分值

        zscore key member                       获取元素的分值

        zrank  key  member                       获取元素的排名

        zincrby  key  increment  member                更改某元素的score

        zrange  key  start end                      获取start-end区间的元素

        zrevrange  key  start  end                     获取倒叙start-end区间的元素

                                         扩展:获取前两名的元素:zrange key 0 1

                                          获取后两名的元素:zrevrange key 0 1

        zrange  key  start  end  withscores                获取start-end区间的元素及其分值,可以看到分值是从小到大排序的

        zrangebyscore  key  min  max                  获取score为min--max区间的元素

     

      集合操作:

        zunionstore resultset numkeys key ...               获取集合的并集,并把结果存入目标集合(resultset)中,numkeys代表有多少个集合参加,

                                       相同的key的score会做相加处理

                                      例如集合k1的元素和score:      a    11           b    20            c    33             d    45

                                          集合k2的元素和score:      b    17           d     27           e    60

                                        结果会是:                      a    11            c     33           b     37            e      60           d     72

        

        zunionstore resultset numkeys key ...    weights   weight ...    这个命令是带权重的求并集方法,相同key的score的处理为:先乘以权重后相加

                                       例如集合K1中有  a    10   集合k2中有  a      8 

                                        命令为:  zunionstore resultset 2 k1 k2 weights  1 2

                                            那么a的结果为:10*1+8*2=26

     

        zunionstore resultset numkeys key...  aggregate max|min|sum  取最大值/最小值/和

     

      

  • 相关阅读:
    ZLL网关程序分析
    ZLL主机接口的信息处理流程
    TI Zigbee Light Link 参考设计
    基于能量收集的智能家居-2013国家级大学生创业实践项目申报_商业计划书_V0.2
    office excel 装Visual Studio后报错解决方案
    php随机生成验证码
    Mysql添加外键约束
    hdu 1232 畅通工程
    hdu 1162 Eddy's picture (Kruskal 算法)
    hdu 1102 Constructing Roads (Prim算法)
  • 原文地址:https://www.cnblogs.com/know-more/p/13305069.html
Copyright © 2020-2023  润新知