redis批量存储集合_redis中的hash、列表、集合操作

本文详细介绍了 Redis 中的 Hash、List 和 Set 的操作,包括 hset/hget、hmset/hmget、hscan、lpush/rpush、lrange/llen、linsert/lrem 等命令的用法,以及如何进行批量存储和检索。通过实例展示了如何在 Redis 中高效管理数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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 删除指定成员

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值