【Redis】总结(一)——基本介绍和五种常用数据类型

本文介绍了Redis的基本概念,包括其高速、键值对存储、丰富的功能和稳定性等特性,并探讨了Redis在缓存、排行榜系统等场景的应用。详细讲解了Redis的五种数据类型:字符串、哈希、列表、集合和有序集合,以及它们各自的特点和使用场景。

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

一、什么是Redis

Redis,全称 Remote Dictionary Server,是一种基于键值对(key-value)的NoSQL数据库。

Redis的特性:

  • 速度快
  • 基于键值对的数据结构服务器
  • 丰富的功能
  • 简单稳定
  • 客户端语言多
  • 持久化:RDB和AOF
  • 主从复制
  • 高可用和分布式

Redis的使用场景:

  • 缓存
  • 排行榜系统
  • 计数器应用
  • 社交网络
  • 消息队列系统

Redis高性能的三个因素:

  • 纯内存存储
  • IO多路复用技术
  • 单线程架构

Redis常用全局命令:

//查看所有键
keys *

//键总数
dbsize

//检查键是否存在,存在返回1不存在返回0
exists key

//删除键
del key [key...]

//为某个键设置过期时间(秒)
expire key seconds
//返回键的剩余过期时间(秒)
ttl key

//键的数据结构类型
type key

二、五种常用数据类型

Redis常用的五种数据类型分别是:string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)。

(一)字符串:

字符串类型的值可以是字符串(简单的字符串、复杂的字符串(例如JSON、XML))、数字(整数、浮点数),甚至是二进制(图片、音频、视频),但是最大值不能超过512MB。

使用场景: 缓存、计数、共享session、限速。

常用命令:

//设置值
//ex seconds: 为键设置秒级过期时间
//px millseconds:为键设置毫秒级过期时间
//nx:键必须不存在,才可以设置成功,用于添加
//xx:键必须存在,才可以设置成功,用于更新
set key value [ex seconds] [px milliseconds] [nx|xx]

//获取值
get key

//批量设置值
mset key value [key value...]

//批量获取值
mget key [key...]

//计数
incr key

(二)哈希

哈希类型是指键值本身又是一个键值对结构,形如value={{field1,value1},...{fieldN,valueN}}。哈希类型中的映射关系叫做field-value,注意这里的value是指field对应的值,不是键值对的值。

使用场景:缓存

常用命令:

//设置值,成功会返回1反之返回0
hset key field value

//获取值
hget key field

//删除field,返回结果为成功删除的个数
hdel key field [field...]

//计算field个数
hlen key

//批量设置或获取field-value
hmget key field [field...]
hmget key field value [field value...]

//判断field是否存在,包含返回1不包含返回0
hexist key firld

//获取所有field
hkeys key

//获取所有的value
hvals key

//获取所有的field-value
hgetall key

(三)列表

列表(list)类型是用来存储多个有序的字符串,列表中的每个字符串称为元素,一个列表最多可以存储2的32次方-1个元素。在Redis中,可以对列表两端插入(push)和弹出(pop),还可以获取指定范围的元素列表、获取指定索引下标的元素等。

使用场景:消息队列、文章列表

命令:

//添加
//从右面插入元素
rpush key value [value...]
//从左边插入元素
lpush key value [value...]
//向某个元素前或者后插入元素
linsert key before|after pivot value

//查找
//获取指定范围内的元素列表(索引下标为0~N-1)
lrange key start end
//获取列表指定索引下标的元素
lindex key index
//获取列表长度
llen key

//删除
//从列表左侧弹出元素
lpop key
//从列表右侧弹出
rpop key
//删除指定元素,从列表中找到等于value的元素进行删除
(count>0从左到右,删除count个元素;count<0从右到左,删除count绝对值个元素;
//count=0删除所有)
lrem key count value
//按照索引范围修剪列表
ltrim key start end

//修改
//修改指定索引下标的元素
lset key index newValue

//阻塞操作
blpop key [key...] timeout
brpop key [key...] timeout

(四)集合

集合(set)类型也是用来保存多个的字符串元素,集合中不允许有重复元素,集合中元素是无序的,不能通过索引下标获取元素。一个集合最多可以存储2的32次方-1个元素,Redis支持集合内的增删改查,同时还支持多个集合取交集、并集。

使用场景:标签

命令:

//集合内操作
//添加元素
sadd key element [element...]
//删除元素
srem key element [element...]
//计算元素个数
scard key
//判断元素是否在集合中
sismember key element
//随机从集合返回指定个数元素(count如果不写默认1)
srandmember key [count]
//从集合随机弹出元素
spop key
//获取所有元素
smembers key

//集合间操作
//求多个集合的交集
sinter key [key...]
//求多个集合的并集
suinon key [key...]
//求多个集合的差集
sdiff key [key...]
//将交集、并集、差集的结果保存
sinterstore destination key [key...]
suionstore destination key [key...]
sdiffstore destination key [key...]

(五)有序集合

有序集合集合内不能有重复元素,但是集合中的元素可以排序。它和列表使用索引下标祖籍为排序依据不同的是,它给每个元素设置一个分数(score)作为排序的依据。

使用场景:排行榜系统

命令:

//集合内
//添加成员
zadd key score member [score member...]
//计算成员个数
zcard key
//计算某个成员的分数
zscore key member
//计算成员的排名,zrank表示从低到高,zrevrank表示从高到低
zrank key member
zrevrank key member
//删除成员
zrem key member [member...]
//增加成员的分数
zincrby key increment member
//返回指定排名范围的成员,加上withscores表示返回成员分数
zrange key start end [withscores]
zrevrange key start end [withscores]
//返回指定分数范围的成员
zrangebyscore key min max [withscores] [limit offset count]
zrevrangebyscore key max min [withscores] [limit offset count]
//返回指定分数范围成员个数
zcount key minm max
//删除指定排名内的升序元素
zremrangebyrank key start end
//删除指定分数范围的成员
zremrangebyscore key min max

//集合间的操作
//destination:交集计算结果保存到这个键
//key [key...]:需要做交集计算的键
//weights weight [weight...]:每个键的权重,交集计算时每个键中的每个member会将自己的分数乘以这个权重,每个键默认权重为1
//aggregate sum|min|max//计算成员交集后,分值可以按照sum(和)、min(最小值)、max(最大值)做汇总,默认是sum
//交集
zinterstore destination numkeys key [key...] [weights weight [weight...]] [aggregate sum|min|max]
//并集
zunionstore destination numkeys key [key...] [weights weight [weight...]] [aggregate sum|min|max]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值