当前位置:   article > 正文

redis中的hash、列表、集合操作_redis hash 列表 集合

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
  1. 127.0.0.1:6379> hset info name lina
  2. (integer) 1
  3. 127.0.0.1:6379> hget info name
  4. "lina"
  5. 127.0.0.1:6379> hmset info age 22 sex F
  6. OK
  7. 127.0.0.1:6379> hmget info name age sex
  8. 1) "lina"
  9. 2) "22"
  10. 3) "F"
  11. 127.0.0.1:6379> hkeys info
  12. 1) "name"
  13. 2) "age"
  14. 3) "sex"
  15. 127.0.0.1:6379> hvals info
  16. 1) "lina"
  17. 2) "22"
  18. 3) "F"
  19. 127.0.0.1:6379> hlen info
  20. (integer) 3

1.2 hash 下几个常用方法

删除key 下指定键值

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

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

  • hexists key field
  1. 127.0.0.1:6379> hdel info sex
  2. (integer) 1
  3. 127.0.0.1:6379> hexists info sex
  4. (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匹配几个,输入数字就好
  1. 127.0.0.1:6379> hscan info 0 match na* count 1
  2. 1) "0"
  3. 2) 1) "name"
  4. 2) "lina"

二、列表操作

- lpush key value1 value2 value3 创建一个列表,并从左往右依次放入数据(FILO) - rpush key value value2 同理上面,右往左放入(FIFO)

  • lrange key start stop 取列表中的值,从start 到stop 0 -1为取全部
  • llen key 查看列表长度
  1. 127.0.0.1:6379> lpush list 1 2 3
  2. (integer) 3
  3. 127.0.0.1:6379> rpush list 1 2 3
  4. (integer) 6
  5. 127.0.0.1:6379> lrange list 0 -1
  6. 1) "3"
  7. 2) "2"
  8. 3) "1"
  9. 4) "1"
  10. 5) "2"
  11. 6) "3"
  12. 127.0.0.1:6379> llen list
  13. (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: 将要插入的值

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

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

修改指定索引的值:

  • lset key index value

删除指定位置的值:

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

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

  • lpop key

获取指定索引的值

  • lindex key index

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

  • ltrim key start end
  1. 127.0.0.1:6379> lrange list 0 -1
  2. 1) "3"
  3. 2) "2"
  4. 3) "insert"
  5. 4) "1"
  6. 5) "1"
  7. 6) "2"
  8. 7) "3"
  9. 127.0.0.1:6379> lset list 1 'lina'
  10. OK
  11. 127.0.0.1:6379> lrem list 2 1
  12. (integer) 2
  13. 127.0.0.1:6379> lpop list
  14. "3"
  15. 127.0.0.1:6379> lrange list 0 -1
  16. 1) "lina"
  17. 2) "insert"
  18. 3) "2"
  19. 4) "3"
  20. 127.0.0.1:6379> ltrim list 0 1
  21. OK
  22. 127.0.0.1:6379> lrange list 0 -1
  23. 1) "lina"
  24. 2) "insert"
  25. 127.0.0.1:6379> lindex list 1
  26. "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 统计权重最小到最大

  1. 127.0.0.1:6379> zadd zz 1 shiqi 2 zengyue 3 yuan
  2. (integer) 3
  3. 127.0.0.1:6379> zrange zz 0 -1
  4. 1) "shiqi"
  5. 2) "zengyue"
  6. 3) "yuan"
  7. 127.0.0.1:6379> zrange zz 0 -1 withscores
  8. 1) "shiqi"
  9. 2) "1"
  10. 3) "zengyue"
  11. 4) "2"
  12. 5) "yuan"
  13. 127.0.0.1:6379> zcount zz 1 2
  14. (integer) 2
  • zrank key member 获取成员排名

  • zrem key member member2 删除指定成员

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/800856
推荐阅读
相关标签
  

闽ICP备14008679号