it编程 > 数据库 > Redis

Redis的数据类型解读

49人参与 2025-07-29 Redis

string

以下是基于图片中 redis string类型命令 的提取与优化整理,结合实用场景和注意事项,便于快速掌握核心用法:

redis string类型命令详解与优化指南

1. 基础操作

命令

语法示例

作用

场景说明

set

set key value

添加/修改键值对

缓存、简单数据存储

get

get key

获取key对应的value

读取缓存或配置

setnx

setnx key value

key不存在时才设置(原子操作)

分布式锁、防重复提交

set get setnx

2. 批量操作

命令

语法示例

优势

mset

mset k1 v1 k2 v2

减少网络开销,批量写入

mget

mget k1 k2

批量读取,提升效率

3. 数字增减

命令

语法示例

说明

incr

incr key

整数+1(如计数器)

incrby

incrby key 5

指定步长(如+5)

incrbyfloat

incrbyfloat key 0.5

浮点数增减(如库存调整)

incr (auto-increment)

4. 有效期控制

命令

语法示例

用途

setex

setex key 60 "value"

设置键值对并指定有效期(秒)

psetex

psetex key 10000 "value"

毫秒级有效期(精准控制)

setex (ex =expire)

添加一个key 并且 设置有效期

同样在后面加 ex 可以实现

psetex

命令对比速查表

需求

应选命令

替代方案

设置值并过期

setex

set

+expire

防覆盖写入

setnx

set

+nx

参数

浮点数计算

incrbyfloat

客户端计算后set

key的层级模式

在这里面就形成了层级结构

hash类型

redis hash类型常见命令速查表

命令格式

功能描述

示例用法

hset key field value

设置/修改hash键中指定字段的值

hset user:100 name "张三"

hget key field

获取hash键中指定字段的值

hget user:100 name

→ "张三"

hmset key field1 value1 [field2 value2...]

批量设置多个字段值(redis 4.0+建议改用hset)

hmset product:500 price 2999 stock 100

hmget key field1 [field2...]

批量获取多个字段的值

hmget user:100 name age

hgetall key

获取hash键中所有字段和值(返回交替显示的字段/值列表)

hgetall user:100

hkeys key

获取hash键中所有字段名

hkeys product:500

→ ["price", "stock"]

hvals key

获取hash键中所有字段值

hvals product:500

→ ["2999", "100"]

hincrby key field increment

对指定字段值进行整数递增/递减(支持负数)

hincrby product:500 stock -5

hsetnx key field value

仅当字段不存在时设置值(原子操作)

hsetnx user:100 email "a@test.com"

相当于 一个 key 可以存放 多个哈希key 和 哈希value

要同时指定 key 和 哈希key 才可以获得 哈希value

hmset 输入一个key 和一次性添加多个 哈希key 和 哈希value

hmget 输入一次key 一次性输入 多个 哈希key 去获得 多个 哈希value

hgetall 输入一次key 获得所有 的哈希key 哈希value 依次返回

hkeys 获得所有的哈希key

hvals 获得所有的哈希value

hincrby 指定 key 指定哈希key 选择增加的 数值

hsetnx 指定key 和 哈希key 如果哈希key不存在 则添加 value 如果 存在 则添加失败

link类型

list接近于 java中的linkedlist

lpush 向左推入元素 l是 left

先推入1 后 2 后3 所以顺序是 321

rpush 向右推入元素 r是 right

lpop 向左取出元素 并且删除该元素

rpop 向右取出元素 并且删除该元素

lrange 从左到右取出 范围内的数 并且不删除

blpop 左 延迟等待 删除

阻塞方式 第三个参数是时间

如果表内不存在数据 就会等100s 去等

打开第二个客户端去添加数据 然后第一个客户端就会 接收到然后删除

brpop 右 延迟等待删除

阻塞方式 第三个参数是时间

如果表内不存在数据 就会等100s 去等

打开第二个客户端去添加数据 然后第一个客户端就会 接收到然后删除

set类型

list接近于 java中的linkedlist

lpush 向左推入元素 l是 left

先推入1 后 2 后3 所以顺序是 321

rpush 向右推入元素 r是 right

lpop 向左取出元素 并且删除该元素

rpop 向右取出元素 并且删除该元素

lrange 从左到右取出 范围内的数 并且不删除

blpop 左 延迟等待 删除

阻塞方式 第三个参数是时间

如果表内不存在数据 就会等100s 去等

打开第二个客户端去添加数据 然后第一个客户端就会 接收到然后删除

brpop 右 延迟等待删除

阻塞方式 第三个参数是时间

如果表内不存在数据 就会等100s 去等

打开第二个客户端去添加数据 然后第一个客户端就会 接收到然后删除

sortset类型

zadd 添加 注意的是 第一个是 key 然后 前面的数据是 score 后面的值是 value

它会自动按照score 分数排名 升序

zrem (rem remove) key 为 stus 就是把value 为 tom 的删除掉

zrank (rank 排名)

它返回的排名 是从 0 开始的 0 1 2 所以 就是 2

zrevrank (rev = reverse rank 排名)

倒序排序 从0开始 0 1 2 3 所以是 3

zcard 获取所有元素总个数

zcount 0 82 范围查询个数

zincrby (选择自增多少分 改成负的就减分了)

zrange (查出这个范围的所有数据) 起始为0

zrevrange 通过排序个数 范围查询 (rev = reverse range 范围) )

zrangebyscore 通过分数范围查询 value

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。 

(0)

您想发表意见!!点此发布评论

推荐阅读

Redis中的通用命令解读

07-29

使用Redis实现API网关或单个服务的请求限流的具体代码

07-30

Redis中ZSet数据结构与滑动窗口应用实现

07-30

Redis 部署模式详解

07-28

初始Redis概念、特性、安装使用场景

07-28

搭建Caffeine+Redis多级缓存机制

07-28

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论