02-数据结构

Redis是一个基于内存的非阻塞IO单线程数据库,其快速性能主要源于纯内存存储、串行执行命令和避免线程切换。文章介绍了Redis的基本命令,如keys,dbsize,del,expire等,并详细讲解了String、Hash、List、Set和ZSet五种数据结构的特性和应用场景,以及相关操作命令,如mget,lpush,rpop,smembers等,适合于缓存、计数器和消息队列等用途。
摘要由CSDN通过智能技术生成

通用命令

  • 遍历所有的key keys *(一般不在生产环境使用,数据较大,很慢,O(n))

注意:如要使用keys,1.热备从节点 2.scan

  • 计算数据库大小dbsize,线上可以使用,时间复杂度O(1),(内置一个对所有键值进行统计的计数器)

  • 存在key exists key,O(1)

  • 删除key del key

  • key的过期时间 expire key seonds在seconds秒后过期

    ttl key 查看key剩余的过期时间(-2,不存在key;-1,存在,但灭有过期时间)

    persist key 去掉key的过期时间

  • key的类型 type key

    string,hash,list,set,zset,none(不存在此key)

数据结构

在这里插入图片描述

单线程架构

串行,同一时间只会执行一条命令
在这里插入图片描述

快的原因:

1.纯内存,大约100nm

2.非阻塞IO

3.避免线程切换和竞态消耗

使用时注意
在这里插入图片描述

字符串(String)

value不能大于512MB(建议100k以内)

使用场景:

缓存,计数器,分布式锁

常用命令

get key,set key value,del key
在这里插入图片描述
单线程,计数器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
中文为1:2
在这里插入图片描述

Hash

在这里插入图片描述
field不能相同,value可以相同

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意使用mgetall,redis是单线程的,最好使用hmget(数据多的情况下)

在这里插入图片描述

String和Hash相似api

在这里插入图片描述

不同

在这里插入图片描述
封装成一个对象,需要一整个更新,序列化

在这里插入图片描述
用户信息不是整体,不便于管理

在这里插入图片描述
在这里插入图片描述
ttl过期时间

List

有序列表,可以重复,左右两边插入弹出

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
剩下start-end
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
实战-微博TimeLine时间轴,更新放上面
在这里插入图片描述
b阻塞,lpop,rpop的阻塞版
在这里插入图片描述
左插(LPUSH)+左弹=栈

左插+右弹=队列

左插+按索引保留列表=固定数量列表(控制列表大小)

左插+阻塞右弹=消息队列

Set

在这里插入图片描述
特点:无序,无重复,支持集合间操作

集合内api

在这里插入图片描述
在这里插入图片描述

smembers:无序,需要小心使用(数据多),可以使用scan

在这里插入图片描述

可在微博抽奖中使用

在这里插入图片描述

集合间api

在这里插入图片描述
在这里插入图片描述

ZSet

有序集合,score可以重复

在这里插入图片描述

比较

在这里插入图片描述
在这里插入图片描述

重要api

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
zrank获取某一元素的排名,从低到高

zrevrank,同上,从高到低

在这里插入图片描述
不加withscores,就只返回value

zrevrange,从高到低

在这里插入图片描述
zrevrangebyscore,从高到低
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

可在排行榜使用

集合间

zinterstore,zunionstore同set,交集,并集

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值