redis中的hash、列表、集合操作
2021/10/14 19:14:52
本文主要是介绍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 删除指定成员
这篇关于redis中的hash、列表、集合操作的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-08阿里云Redis项目实战入门教程
- 2024-11-08阿里云Redis资料:新手入门与初级使用指南
- 2024-11-08阿里云Redis教程:新手入门及实用指南
- 2024-11-07阿里云Redis学习入门:新手必读指南
- 2024-11-07阿里云Redis学习入门:从零开始的操作指南
- 2024-11-07阿里云Redis学习:初学者指南
- 2024-11-06阿里云Redis入门教程:轻松搭建与使用指南
- 2024-11-02Redis项目实战:新手入门教程
- 2024-10-22Redis入门教程:轻松掌握数据存储与操作
- 2024-10-22Redis缓存入门教程:快速掌握Redis缓存基础知识