redis数据结构

本文详细介绍了Redis的五种核心数据结构:String(包括 incr, decr 操作)、Hash(存储键值对及增量操作)、List(常用操作如 lpush, rpush, lrange 等)、Set(不允许重复元素)以及 Sorted Set(有序集合)。这些数据结构广泛应用于缓存、任务队列、网站统计、数据过期处理、排行榜等功能。例如,String适用于计数,Hash适合存储对象,List常作为消息队列,Set用于存储唯一元素,Sorted Set则用于实现积分排行榜等有序数据需求。" 120863590,11548438,使用外观模式实现电脑主机启动流程,"['设计模式', 'Java', 'JVM']

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

redis的应用场景:
1、缓存(数据查询、新闻和商品的内容、聊天是的在线好友列表)
2、任务队列(秒杀、抢购)
3、网站访问统计
4、数据过期处理(精确到ms)
5、应用排行榜
6、分布式集群架构中的session分离

1、redis数据结构之string类型,VALUE的最大容纳长度为512M——key不能超过1024,value最大512M
set、get、getset key value、del key
incr、decr
1. incr key – key 如果不存在则先赋值为0,然后+1,结果为1
2. decr key – key如果不存在则先赋值为0 ,然后-1,结果为-1
3. incrby key skip 递增指定数量
4. decrby key skip 递减指定数量
append
2、redis数据结构之哈希——key 和value的map容器,最多存储42+亿的数据
存储k/v : hset key k v
取k对应的v: hget key k
删除键k:hdel key k
对k加上一个增量(可以为负): hincrby key k delta
对k加上一个浮点数(可以为负): hincrbyfloat key k delta
存储多个k/v对: hmset key k1 v1 k2 v2 … kn vn
取多个k对应的值: hmset key k1 k2 … kn
取所有的k/v对: hgetall
取所有的键的值:hvals key
取键值对的个数:hlen key
取所有键名:hkeys key
判断是否存在k:hexists key k

3、redis数据结构之list
lpush key str1,str2……strn 从左侧添加数据 若key不存在 为其创建一个list
rpush key str1,str2……strn 从右侧添加数据 若key不存在 为其创建一个list
lrange key start,end 查看指定角标之间的元素 角标可为负数,-1为最后一个元素,以此类推
lpop key 弹出左侧第一个元素
rpop key 弹出右侧第一个元素
llen key 获取列表中元素个数
lpushx key val 向列表头部插入val 仅当key存在时可用 返回值为lit的长度
lrem key count val 删除列表中count个值为val的元素 count>0从头向尾遍历 count<0 从尾向前 若 count =0 删除所有值为val的元素
lset key index val 将列表中角标为index的元素的值设为val
linsert key before val str 在指定元素val前插入数据str
linsert key after val str 在指定元素val后插入数据str
rpoplpush key1 key2 将列表1中的右侧第一个元素弹出从左侧加入到列表2中

应用场景:
1、多用于消息队列场景的交互,生产者与消费者之间的消息队列,rpoplpush,主消息队列中取出后,插入后备份的队列中,直到程序逻辑完成,正常的消费后,再将消息从备份队列中删除(弹出);如果备份消息队列中过期,重新放回到主消息队列中,以便其他的消费者继续消费;

3、redis数据结构之set
和List类型不同的是:Set集合中不允许出现重复的元素,List中元素可以重复
Set中可包含的最大元素数量与List一样
存储set常用命令:
添加:sadd name a b c不能有重复元素
删除:srem name a b
查看set:smembers name
是否包含: sismember myset a
seta 与 setb 不同的元素 sdiff seta setb
sdiffstore setc seta setb 存储到setc中
差集运算:sdiff name1 name2显示相差的元素,和key的顺序有关

添加元素: sadd mySet a b c
移除元素: srem mySet a
查看元素: smembers mySet
存在元素: sismember mySet a
差集元素: sdiff mySet mySet1
交集元素: sinter mySet mySet1

sadd,srem,smembers,sismember,sdiff,sinter,sunion,sdiffstore,sinterstore,sunionstore,scard,srandmember

set使用场景
跟踪一些唯一性数据
维护数据对象之间的关联关系

4、redis数据结构之sorted—set

Redis数据结构(Sort-set):可存储有序但不重复的数据,根据分数指定存储顺序
命令:
(1)存:zadd 列名 [分数 值]…
(2)查分数:zscore 列名 值
(3)查数量:zcard 列名
(4)单删:zrem 列名 值…;范围删除:zremrangebyrank 列名 [begin,end]
10.212.113.54:9100> zrange mysort 0 -1
1) “lisi”
2) “zs”
10.212.113.54:9100> zrange mysort 0 -1 withscores (分数默认从小到大)
1) “lisi”
2) “80”
3) “zs”
4) “100”
10.212.113.54:9100> zrevrange mysort 0 -1 withscores (从大到小)
1) “zs”
2) “100”
3) “lisi”
4) “80”
10.212.113.54:9100> zremrangebyrank mysort 0 2 (根据序号删除元素)
(integer) 2
10.212.113.54:9100> zremrangebyscore mysort 80 100 (根据分数删除元素)
(integer) 3
10.212.113.54:9100> zrangebyscore mysort 0 100 withscores (根据分数范围从小到大排序)
1) “zs”
2) “70”
3) “ls”
4) “80”
5) “ww”
6) “90”
10.212.113.54:9100> zrangebyscore mysort 0 100 withscores limit 0 2 (根据分数范围从小到大排序,限制个数)
1) “zs”
2) “70”
3) “ls”
4) “80”
10.212.113.54:9100> zincrby mysort 11 ls
“91”
10.212.113.54:9100> zcount mysort 80 90
(integer) 1
10.212.113.54:9100> zscore mysort ls
“91”

Sorted-Set使用场景:
如大型在线游戏积分排行榜
构建索引数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值