Redis数据类型之list、hash、set以及sorted_set

list

  •  

     

  • 双向链表,key中有head和tail指向list的第一个以及最后一个元素。
  • 可重复的,有序的,插入的顺序。
  • 对list的操作
    • 使用help @list查看所有操作
    • 在对list的操作中,以L开头的操作,部分代表list的左边,以R开头的操作代表list的右边。维护了正负索引
    • lpush key value [value]:从list的左边添加元素。(后push的在左边)
    • rpush key value [value]:从list的右边添加元素。(后push的在右边)
    • lpop key:从list的左边弹出元素。
    • rpop key:从list的右边弹出元素。
    • lrange key start stop:取value从start到stop的元素。
    • lindex key index:取出value位于index的元素。
    • lset key index value:将index处设为value。
    1. lpush + lpop / rpush + rpop(同向命令):先进后出,模拟栈
    2. lpush + rpop / rpush + lpop(反向命令):先进先出,模拟队列
    3. list对index进行操作模拟数组 。
    • linset key before|after pivot value:在链表中的pivot元素前|后插入值为value的元素(左起第一个pivot元素)。
    • lrem key count value:移除值为value的count个元素(list不去重),count分为正数,负数,0。
      • 正数:从左移除count个value。
      • 负数:从右移除count个value。
      • 0:不移除
    • blpop key [key...] timeout(b开头为阻塞命令):阻塞的弹出list中的左起第一个元素,timeout为阻塞时间,0是一直阻塞。
      • 阻塞的单播队列:list中的元素会先被第一个阻塞调用的进程取。
    • ltrim key start stop:保留start到stop之间的元素(start以及stop位置的元素也被保留),两端的被删除。

hash

  •  

     

  • 类似于hashmap。
  • 应用于点赞、评论、收藏数以及商品详情等。
  • 对hash的操作
    • help @hash查看所有操作
    • hset key field value:在value里面放了一个键值对。
    • hmset key field value [field value]:在value放多个键值对。
    • hget key field:取出value里面field对应的值。
    • hmget key field [field...]:取出多个。
    • hkeys key:取出value里面所有的key(键值对中的)。
    • hvalues key:取出key对应值里面所有的value。
    • hgetall key:取出所有的键值对。
    • hincrbyfloat key field increment:对field对应的值增加increment(对数值的操作)。
    • hincrby key field increment:对field对应的值增加increment(整型)。

set

  •  

     

  • 去重,无序
  • 对set的操作
    • help @set
    • sadd key member [member...]:添加元素。
    • smembers key:取出所有的值(很少使用,数据量大的情况下会消耗redis在主机的吞吐量)。
    • srem key member [member...]:移除元素。
    • sinter key [key...]:得出key之间的交集并返回。
    • sinterstore destination key [key...]:将交集赋值到destination(这个命令的出现是为了将交集存放到redis中的情况,省去了客户端拿到交集再回写到redis的过程)。
    • sunion key [key...]:得出key之间的并集并返回(也有sunionstore命令)。
    • sdiff key [key...]:得出key的差集(也有sdiffstore命令)。
      • k1: 1 2 3 4 5;k2: 4 5 6 7 8
      • sdiff k1 k2:1 2 3
      • sdiff k2 k1:6 7 8
    • srandmember key [count]:取出count个数据。
      • 正数(小于元素个数):在已有集合中返回count个去重的结果。
      • 正数(大于元素个数):返回所有数据。
      • 负数:取出一个有重复数据的结果集,一定会满足需要的数量。
      • 0:不返回。
    • spop key:随机弹出一个值并返回该值。

sorted set

  •  

     

  • 去重,有序
  • 排序是根据存入的排序依据(score)进行的,如果分值相同,按照value的字典序进行排序
  • 有正负向索引
  • 对sorted_set的操作(对元素、分值以及排名的操作)
    • help @sorted_set查看所有操作
    • zadd key score member [score member...]:存入数据及其分值。
    • zrange key start stop [WITHSCORES]:取出从start到stop(索引是按照分数来排序的)的元素[将分值也打印出来]。
    • zrangebyscore key min max [WITHSCORES]:取出分值在min到max之间的元素[将分值也打印出来]。
    • zrevrange key start stop:由高到低取出start到stop之间的数据(由高到低取数据只能使用zrevrange)。
    • zscore key member:取出member的分值。
    • zrank key member:取出member的排名。
    • zincrby key increment member:对member的分值增加increment。
      • 会根据元素的分值实时维护元素的顺序。
    • zunionstore destination numkeys key [key...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
      • numkeys--key的个数:不加其他参数的时候会把两个key中重复出现的元素的分值相加,此时WEIGHTS默认为1,AGGREGATE默认为sum。
      • WEIGHTS--权重:此时的分数=key1*weight1 + key2*weight2。此时AGGREGATE默认为sum
      • AGGREGATE--聚合参数:max:去重复元素分值的最大值。
posted @ 2021-02-28 19:17  January01  阅读(145)  评论(0)    收藏  举报