当前位置: 代码网 > it编程>数据库>Redis > Redis的数据类型解读

Redis的数据类型解读

2025年07月29日 Redis 我要评论
string以下是基于图片中 redis string类型命令 的提取与优化整理,结合实用场景和注意事项,便于快速掌握核心用法:redis string类型命令详解与优化指南1. 基础操作命令语法示例

string

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

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

1. 基础操作

命令

语法示例

作用

场景说明

set

set key value

添加/修改键值对

缓存、简单数据存储

get

get key

获取key对应的value

读取缓存或配置

setnx

setnx key value

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

分布式锁、防重复提交

set get setnx

  • setnx 如果key值不存在 才添加 如果存在 就不添加 这才是 真正的新增操作

  • set 后面 跟nx 也可以实现

2. 批量操作

命令

语法示例

优势

mset

mset k1 v1 k2 v2

减少网络开销,批量写入

mget

mget k1 k2

批量读取,提升效率

  • mset 多量 添加/修改
  • mget 多量 获取

3. 数字增减

命令

语法示例

说明

incr

incr key

整数+1(如计数器)

incrby

incrby key 5

指定步长(如+5)

incrbyfloat

incrbyfloat key 0.5

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

incr (auto-increment)

  • incrby 值改成 负的 就 是自减了
  • incrbyfloat 浮点数增减

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"

  • hset

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

  • hget

要同时指定 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)

相关文章:

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

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com