zoukankan      html  css  js  c++  java
  • redis中的hash、列表、集合操作

    一、hash操作
    数据结构:key:{k1:v1, k2:v2, k3:v3} 类似Python中的字典

    如:info : {name: lina, age: 22, sex: F}

    • hset key k1 v1 设置/创建(字典)
    • hget key k1 获取key1 中 k1对应的值

    批量设置获取

    • hmset key k2 v2 k3 v3 同时设置多个k-value
    • hmget key k1 k2 k3 同时获取多个值

    获取所有keys

    • hkeys key

    获取所有values

    • hvals key

    查看键值下面的k个数

    • hlen key
    127.0.0.1:6379> hset info name lina
    (integer) 1
    127.0.0.1:6379> hget info name
    "lina"
    127.0.0.1:6379> hmset info age 22 sex F
    OK
    127.0.0.1:6379> hmget info name age sex
    1) "lina"
    2) "22"
    3) "F"
    127.0.0.1:6379> hkeys info
    1) "name"
    2) "age"
    3) "sex"
    127.0.0.1:6379> hvals info
    1) "lina"
    2) "22"
    3) "F"
    127.0.0.1:6379> hlen info
    (integer) 3
    
    1.2 hash 下几个常用方法

    删除key 下指定键值

    • hdel key k1 k2 k3 可删除一个或多个

    判断key 下指定键值是否存在

    • hexists key field
    127.0.0.1:6379> hdel info sex
    (integer) 1
    127.0.0.1:6379> hexists info sex
    (integer) 0
    

    在hash操作中一个key 能存200亿条数据,如果使用 hmget key 命令,那占用内存,和速度就太慢了
    所以使用扫描,类是python 中生成器一样的方式:

    • hscan key cursor match pattern COUNT count
      :para key: 那个hash
      :para cursor: 游标,从哪开始扫描 一般从 0
      :para match: pattern 模糊匹配,正则表达
      :para COUNT: count匹配几个,输入数字就好
    127.0.0.1:6379> hscan info 0 match na* count 1
    1) "0"
    2) 1) "name"
       2) "lina"
    
    二、列表操作
    - lpush key value1 value2 value3 创建一个列表,并从左往右依次放入数据(FILO) - rpush key value value2 同理上面,右往左放入(FIFO)
    • lrange key start stop 取列表中的值,从start 到stop 0 -1为取全部
    • llen key 查看列表长度
    127.0.0.1:6379> lpush list 1 2 3
    (integer) 3
    127.0.0.1:6379> rpush list 1 2 3
    (integer) 6
    127.0.0.1:6379> lrange list 0 -1
    1) "3"
    2) "2"
    3) "1"
    4) "1"
    5) "2"
    6) "3"
    127.0.0.1:6379> llen list
    (integer) 6
    
    2.2 往列表中插入元素,删除元素等
    • linsert key where refvalue value 往key中对应的refvalue标杆值的 where(before 和 after)前后后两个选项,插入数据value
      :para key: 对应列表
      :para where: before 或 after 意思在标杆值之前或之后
      :para refvale: 标杆值
      :para value: 将要插入的值

    注意:如果有重复值,以找到的第一个为标杆

    (integer) 6
    127.0.0.1:6379> linsert list before 1 insert
    (integer) 7
    127.0.0.1:6379> lrange list 0 -1
    1) "3"
    2) "2"
    3) "insert"
    4) "1"
    5) "1"
    6) "2"
    

    修改指定索引的值:

    • lset key index value

    删除指定位置的值:

    • lrem key count value 参数count 为删除几个,value为 删谁

    从列表左边获取一个值返回,并删除它

    • lpop key

    获取指定索引的值

    • lindex key index

    删除指定范围之外的所有元素

    • ltrim key start end
    127.0.0.1:6379> lrange list 0 -1
    1) "3"
    2) "2"
    3) "insert"
    4) "1"
    5) "1"
    6) "2"
    7) "3"
    127.0.0.1:6379> lset list 1 'lina'
    OK
    127.0.0.1:6379> lrem list 2 1
    (integer) 2
    127.0.0.1:6379> lpop  list
    "3"
    127.0.0.1:6379> lrange list 0 -1
    1) "lina"
    2) "insert"
    3) "2"
    4) "3"
    127.0.0.1:6379> ltrim list 0 1
    OK
    127.0.0.1:6379> lrange list 0 -1
    1) "lina"
    2) "insert"
    127.0.0.1:6379> lindex list 1
    "insert"
    
    2.3 几个不常用的命令,但很厉害

    把列表一右边pop 添加到列表2 lpush 左边

    • rpoplpush key1 key2

    左边删除一个数据,如果列表为空,就等待超时时间,在超时时间内,列表中出现了元素理解删除。像队列中的queue一般

    • blpop key timeout
    三、set集合

    创建一个集合:

    • sadd key value value value value

    查看集合中的成员:

    • smembers key

    返回集合中的元素个数:

    • scard key

    差集:

    • sdiff key1 key2

    将两个集合中的差集放入第三个集合

    • sdiffstore new_dest key1 key2

    交集:

    • sinter key1 key2

    并集:

    • sunion key1 key2

    检查元素是否为集合中成员:

    • sismember key value

    • spop key

    • sscan key cursor match pattern

    四、有序集合
    • zadd key 权重值 member 权重值2 member2 权重值3 member3

    • zrange key start end 可选参数为 withscores

    • zcount key min max 统计权重最小到最大

    127.0.0.1:6379> zadd zz 1 shiqi 2 zengyue 3 yuan
    (integer) 3
    127.0.0.1:6379> zrange zz 0 -1
    1) "shiqi"
    2) "zengyue"
    3) "yuan"
    127.0.0.1:6379> zrange zz 0 -1 withscores
    1) "shiqi"
    2) "1"
    3) "zengyue"
    4) "2"
    5) "yuan"
    127.0.0.1:6379> zcount zz 1 2
    (integer) 2
    
    • zrank key member 获取成员排名

    • zrem key member member2 删除指定成员

  • 相关阅读:
    Codeforces1499D The Number of Pairs
    Codeforces1493D GCD of an Array
    AtCoder Beginner Contest 192 F
    Codeforces 1485F Copy or Prefix Sum
    Miller_Rabin
    Codeforces Round 655 (Div. 2) E
    Codeforces Round 655 (Div. 2) D
    B
    A
    待更新笔记
  • 原文地址:https://www.cnblogs.com/shiqi17/p/9570840.html
Copyright © 2011-2022 走看看