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  取最大值/最小值/和

 

  

原文地址:https://www.cnblogs.com/know-more/p/13305069.html