redis数据类型及其命令

本文介绍了Redis中的数据类型,包括字符串、哈希、列表、集合和有序集合。字符串常用于缓存和计数器,如浏览量统计;哈希适合存储数据库一行数据,键值对形式;列表适用于时间轴和实现数据结构,如消息队列;集合应用于标签和抽奖场景;有序集合则在排行榜等场景中发挥作用。同时,文章列举了各种类型的相关命令。

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

通用命令

名字用途
del删除自定key的缓存
exists判断key是否存在,可以指定多个key数,返回存在个数
expire设置key的过期时间
ttl查看key 还有多少秒过期,-1不会过期,-2不存在该key
keys模式匹配key的名字,返回匹配的key名字 ,需要扫描所有key,谨慎使用
move将指定的key移动到其他数据库
rename重命名key名字
renamenx当名字不存在时,才允许重命名
type查看key的类型
dbsize获取key个数

字符串类型

应用
  • 缓存
    业务程序在查询数据库时,先查询缓存,如果缓存存在立即返回数据。否则进行数据库查询,缓存查询结果,下一次进行相同的查询能从缓存返回。
  • 计数器
    浏览量、点击量,热点指数等计数器
  • 生成自增唯一id
    由于redis是单进程的,请求是排队执行的。所以可以用作唯一id生成器。在mysql对表进行分片场景中,插入数据行时,利用redis生成自增id,可以保证id在所有分片中是唯一的,并且在一个分片内,主键id是自增的。
命令
名字用途
set key value [ex] [xx|nx]设置一个key,value键值对
mset k1 v1 [k2 v2 k3 v3…]批量设置多个key,value键值对
setnx key value不存在时,创建key value键值对,相当于插入
setxx key value存在时,更新value数值 ,相当于更新
get key获取key的数值
mget k1 [k2 k3 k4 …]批量获取数值
incr key设置key数值自增加1
decr key设置key数值递减1
incrby key number设置key增加 number
decrby key number设置key减少number
append key string字符串追加
strlen key返回字符串长度
getset key value返回kkey的数值,并且重新设置为value
incrbyfloat key floatNum对key数值,自增长一个浮点数
getrange key start end返回key对应字符串,从start开始,到end 结束的子字符串
setrange key start value从字符串start位置开始,依次覆盖设置为value字符串

哈希

应用
  • 用于保存数据库中的一行数据,key是主键,field是字段,value是字段对应的数值
命令
名字用途
hset key field value设置hash表key中的field字段为value
hsetnx key field value设置hash表key中的field字段为value,当field不存在时,才能设置,只能插入新的属性
hget key field获取hash表张field字段的数值
hdel key field删除hash表key中field字段
hlen key放回hash表key的字段数
hmset key field1 value1 [field2 value2 …]批量设置hash表key的字段数值
hmget key field1 [field2 field3]批量获取hash表key字段数值
hgetall key获取hash表中所有字段数值对
hkey key获取hash表中所有字段名字
hval key获取hash表中所有数值
hexists key field判断hash表field字段是否存在
hincre key field自增加hash表中的field字段数值

列表

应用
  • time-line 时间轴
    在微博应用中,能够按时间线展示已关注博主发布的内容。当某个博主发布新的消息时,会将消息push到,已关注粉丝的队列头部。
  • 实现某些些数据结构
    lpush + lpop = 栈
    lpush + rpop = 队列
    lpush + ltrim = 固定长度的列表
    lpush + brpop = 消息队列
命令
名字用途
lpush key value在队列左边插入数据
rpush key value在队列右边插入数据
linsert key <before|after> exists_value value在指定元素前面或者后面插入数据
lpop key, rpop key在队列的左边或者右边弹出数据
blpop key timeout , brpop key timeout在队列的左边或者右边阻塞弹出数据, 直到有数据返回或者超时结束,timeout等于0会一直阻塞
lrange key start end返回队列指定开始位置和结束位置的元素
lindex根据队列下表获取元素
llen获取队列长度
lrem key value count删除队列中自定元素,0删除全部,-n从右边开始删除n个,n从左边开始删除n个
ltrim key start end截取队列从star开始到end结束的元素
lset key index value根据列表下标,更新队列元素

集合

应用
  • 标签
    文章,视频等资源类型的标签
  • 抽奖
    把参与抽奖的用户都添加到一个集合中,通过随机从集合中返回一个用户,得到中奖的用户
  • 共同关注
    A用户把关注的博主保存到集合A,B用户把关注的博主保存到集合B,通过集合A与集合B做交集运行,得到共同关注
命令
名字用途
sadd key m1 m2 m3 …向集合key添加元素
srem key m1从集合中删除元素
sismember key m1判断集合key中是否有元素m1
smembers key返回集合中的所有元素
srandmember key count随机返回集合中的count个元素
spop key随机返回集合中的一个元素,并从集合中移除
scard key返回集合元素个数
sinner key1 key2集合key1与集合key2 做交集运算
sdiff key1 key2集合key1与集合key2 做差集运算
sunion key1 key2集合key1与集合key2 做并集运算

有序集合

应用
  • 排行榜
    例如点赞排行榜,音乐排行榜
命令
名字用途
zadd key [NX|XX] score memnber向有序集合中添加成员
zcard key集合元素个数
zrange key start end [withscores]按照排名获取元素
zrangebyscore key low_score height_score按照分值获取元素
zrank key member获取元素的排名
zscore key member获取元素的分值
zincrby key score member改变元素分值
zrem key member从集合中移除元素
zremrangebyrank key start end按照排名范围移除元素
zremrangebyscore key low_score height_score按照分值范围移除元素
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值