当前位置:

首页 > 编程开发 > Redis的通用命令有哪些

Redis的通用命令有哪些

Redis Assistant
Redis Assistant

Redis Assistant 是一款为Redis设计的高效可视化管理与监控工具,提供多种操作模式,高效处理服务器数据。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

立即下载
¥19
Windows/macOS/Linux 2026-08-22
正版软件 Windows macOS软件 Linux 数据库管理工具

Redis是什么Redis是开源,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串strings,散列hashes,列表lists,集合sets,有序集合sortedsets与范围查询,bitmaps,hyperloglogs和地理空间(geospatial)索引半径查询。Redis还内置了复制(replication),LUA脚本(Luascripting),LRU驱动事件(LRUeviction),事务(transactions)和不同级别的磁盘持久化(

本文目录

    Redis 是什么

    Redis 是 开源,内存 中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如 字符串strings, 散列 hashes, 列表 lists, 集合 sets, 有序集合 sorted sets 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。

    Redis 还内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

    嗯,没错这就是 redis 中文官方网站上面的介绍,简洁明了。

    NoSQL 是什么

    我们知道 redis 是一种非关系型数据库 NoSQL 。而为什么出现 NoSQL?NoSQL 又是什么呢?

    单机数据库的年代

    在一个网站访问量不大的时候,我们使用一个数据库就足以应对流量请求。

    Redis的通用命令有哪些

    缓存 + 拆分

    随着访问量的上升,一个数据库已经不能满足我们的需求了。为了更高的性能,我们在中间加上了一个缓存层并且将数据库做了集群、结构优化和读写分离。

    Redis的通用命令有哪些

    而这里的缓存就是 NoSQL,当然做缓存也只是 NoSQL 的一种功能,就像 Redis 并不仅仅有缓存这一种功能。比如它还能实现 简单的消息队列,解决Session共享,计数器,排行榜,好友关系处理 等等功能,可见 Redis 是一个非常强大工具,让我们来学习它吧!

    Redis 通用命令

    首先我们抛开数据类型来讲关于 Redis 的通用命令。

    Redis的通用命令有哪些

    操作 key 和 value

    Redis 是一种 key value 存储的缓存数据库,所有的数据都有一个自己唯一的key。

    这里为了方便演示,我使用了字符串相关的设置命令

    •  keys [pattern] 获取符合要求的所有key。时间复杂度为 O(n),一般在生产环境中不使用,因为 Redis 是单线程的,执行耗时的任务会阻塞其他任务。一般会使用 scan 命令替代(非阻塞)。

    Redis的通用命令有哪些

    •  dbsize 获取当前存储数据个数。

    •  exists key 判断是否存在该key

    •  del key 删除指定数据

    •  type key 获取指定key的数据类型

    •  rename key newkey 重命名

    Redis的通用命令有哪些

    过期时间

    Redis 中很多数据都是用来作为缓存数据的,而作为缓存就需要有过期时间,在 Redis 中提供了很强大的过期时间设置功能。

    •  expire key seconds 为某个 key 设置过期时间。

    •  ttl key 查看某个 key 的剩余时间,返回正数代表剩余的时间,-1代表永久,-2代表已过期或不存在。

    Redis的通用命令有哪些

    Redis 的五种基本数据类型

    在上面我说到了很多 Redis 作为缓存能实现的其他功能,比如计数器,排行榜,好友关系等,这些实现的依据就是靠着 Redis 的数据结构。在整个 Redis 中一共有五种基本的数据结构(还有些高级数据结构以后会讲),他们分别是 字符串strings, 散列 hashes, 列表 lists, 集合 sets, 有序集合 sorted sets。

    字符串 string

    在绝大部分编程语言中都有 String 字符串类型,对于作为数据库的 Redis 也是必不可少的。

    Redis的通用命令有哪些

    •  set key value 设置值

    •  get key 获取某个key的值

    •  mset key1 value1 key2 value2 批量设置并且是原子的,可以用来减少网络时间消耗

    •  mget key1 key2 批量获取并且是原子的,可以用来减少网络时间消耗 

    Redis的通用命令有哪些

    •  incr key 自增指定key的值

    •  decr key 自减指定key的值

    •  incrby key value 自增指定数值

    •  decrby key value 自减指定数值

    •  incrbyfloat key floatvalue 增加指定浮点数,前面几个操作就可以用来实现计数器的功能。

    Redis的通用命令有哪些

    •  setnx key value 如果不存在该key则可以设置成功,否则会失败,加上过期时间限制,则是redis实现分布式锁的一种方式(后面会提到)。

    •  set key value xx 与前面相反,如果存在则设置成功,否则失败(相当于更新操作)

    Redis的通用命令有哪些

    hash

    Redis的通用命令有哪些

    其实我们可以理解 hash 为 小型 Redis ,Redis 在底层实现上和 Java 中的 HashMap 差不多,都是使用 数组 + 链表 的二维结构实现的。

    Redis的通用命令有哪些

    不同的是,在 Redis 中字典的值只能是字符串,而且他们 rehash 的方式不一样,在 Redis 中使用的是 渐进式rehash 。

    在 rehash 的时候会保留新旧两个 hash 字典,在数据迁移的时候会将旧字典中的内容一点一点迁移到新字典中,查询的同时会查询两个 hash 字典,等数据全部迁移完成才会将新字典代替就字典。

    下面我们来看一下关于 hash 的基本操作。

    •  hset key field value 设置字典中某个key的值

    •  hsetnx key field value 设置字典中某个key的值(不存在的)

    •  hmset key field1 value1 field2 value2 … 批量设置

    •  hget key field 获取字典中某个key的值

    •  hmget key field1 field2 批量获取

    •  hgetall key 获取全部   

    Redis的通用命令有哪些

    •  hdel key field 删除某个key

    •  hexists key field 判断是否存在

    •  hlen key 获取指定key对应的字典中的存储个数

    •  hvals key 返回所有的value

    •  hkeys key 返回所有的key   

    Redis的通用命令有哪些

    Redis的通用命令有哪些

    • hincrby key field increValue 增加某个value的值(也可以增加负数)

    • hincrbyfloat key field floatValue 增加某个value的值(浮点数)

    Redis的通用命令有哪些

    list

    Redis 中的列表相当于 Java 中的 LinkedList(双向链表) ,也就是底层是通过 链表 来实现的,所以对于 list 来说 插入删除操作很快,但 索引定位非常慢。

    Redis的通用命令有哪些

    Redis 提供了许多对于 list 的操作,如出,入等操作,你可以充分利用它们来实现一个 栈 或者 队列。

    Redis的通用命令有哪些

    下面我们来看一下关于 list 的基本操作。

    •  lpush key item1 item2 item3… 从左入栈

    •  rpush key item1 item2 item3… 从右入栈

    •  lpop key 从左出栈

    •  rpop key 从右出栈

    •  lindex key index 获取指定索引的元素 O(n)谨慎使用

    •  lrange key start end 获取指定范围的元素 O(n)谨慎使用   

    Redis的通用命令有哪些

    • linsert key before|after item newitem 在指定元素的前面或者后面添加新元素

    • lrem key count value 删除指定个数值为value的元素

      •   count = 0 :删除所有值为value的元素

      •   count > 0 :从左到右删除 count 个值为 value 的元素

      •   count < 0 :从右到做删除 |count| 个值为 value 的元素

    •  ltrim key start end 保留指定范围的元素

    •  lset key index newValue 更新某个索引的值

    Redis的通用命令有哪些

    •  blpop key timeout 没有则阻塞(timeout指定阻塞时间 为0代表永久)

    •  brpop key timeout 没有则阻塞(timeout指定阻塞时间 为0代表永久) 这两个可以用来实现消费者生产者

    Redis的通用命令有哪些

    总结来说我们可以使用 左入又出或者右入左出 来实现队列,左入左出或者右入右出 来实现栈。

    set

    Redis 中的 set 相当于 Java 中的 HashSet(无序集合),其中里面的元素不可以重复,我们可以利用它实现一些去重的功能。我们还有对几个集合进行取交集,取并集等操作,这些操作就可以获取不同用户之间的共同好友,共同爱好等等。

    Redis的通用命令有哪些

    下面我们就来看一下关于 set 的一些基本操作。

    •  sadd key value 添加元素

    •  sdel key value 删除某个元素

    •  sismember key value 判断是否是集合中的元素

    •  srandmember key count 随机获取指定个数的元素(不会影响集合结构)

    •  spop key count 从集合中随机弹出元素(会破坏结合结构)

    •  smembers key 获取集合所有元素 O(n)复杂度

    •  scard key 获取集合个数

    Redis的通用命令有哪些

    •  sinter set1 set2 … 获取所有集合中的交集

    •  sdiff set1 set2 … 获取所有集合中的差集

    •  sunion set1 set2 … 获取所有集合中的并集

    Redis的通用命令有哪些

    zset

    Redis 中的 zset 是一个 有序集合,通过它可以实现很多有意思的功能,比如学生成绩排行榜,视频播放量排行榜等等。

    Redis的通用命令有哪些

    zset 中是使用 跳表 来实现的,我们知道只有数组这种连续的空间才能使用二分查找进行快速的定位,而链表是不可以的。跳表帮助链表查找的时候节省了很多时间(使用跳的方式来遍历索引来进行有序插入),如果不了解跳表的同学可以补习一下。

    Redis的通用命令有哪些

    Redis 中的事务和管道

    管道 Pipeline

    在某些场景下我们在一次操作中可能需要执行多个命令,而如果我们只是一个命令一个命令去执行则会浪费很多网络消耗时间,如果将命令一次性传输到 Redis 中去再执行,则会减少很多开销时间。

    但是需要注意的是 pipeline 中的命令并不是原子性执行的,也就是说管道中的命令到达 Redis 服务器的时候可能会被其他的命令穿插。

    Redis的通用命令有哪些

    Redis的通用命令有哪些

    事务

    关系型数据库具有 ACID 特性,Redis 能保证A(原子性)和I(隔离性),D(持久性)看是否有配置 RDB或者 AOF 持久化操作,但无法保证一致性,因为 Redis 事务不支持回滚。

    我们可以简单理解为 Redis 中的事务只是比 Pipeline 多了个原子性操作,也就是不会被其他命令给分割,如上图。

    •  multi 事务开始的标志

    •  exec 事务执行

    Redis的通用命令有哪些

    •  discard 清除在这个事务中放入队列的所有命令,即解除整个事务。

    •  watch key 在事务开始前监控某个元素,如果在提交事务的时候发现这个元素的值被其他客户端更改了则事务会运行失败。

    •  unwatch key 解除监控

    Redis的通用命令有哪些

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发
    相关文章 更多
    php72w redis,docker php7安装php-redis
    php72w redis,docker php7安装php-redis

    在Docker环境下为PHP安装Redis扩展:手动编译需下载源码、安装phpize、配置编译并安装,生成redis.so并在php.d目录新建redis.ini加载,重启PHP-FPM;也可直接yum安装php72w-pecl-redis,免手动编译。

    php 如何配置 redis,php 如何设置redis
    php 如何配置 redis,php 如何设置redis

    配置PHP的Redis扩展:先安装Redis服务,从GitHub下载phpredis源码,用phpize编译安装,修改php.ini添加extension=redis.so,重启php-fpm或Apache,通过phpinfo验证并连接Redis。

    c++如何将结构体序列化为Redis兼容的RESP协议格式【深度】
    c++如何将结构体序列化为Redis兼容的RESP协议格式【深度】

    C++结构体无法直接序列化为RESP协议,需手动将字段映射为*N数组嵌套$lenbulkstring形式。整数需转换为字符串并加:前缀,空字符串用$0\r\n,null用$-1\r\n。长度计算需精确到字节数,特别注意二进制安全,同时确保字段顺序与结构体定义一致。

    如何在Golang架构中部署Redict作为高能数据临时存储中转站
    如何在Golang架构中部署Redict作为高能数据临时存储中转站

    Redis作为跨服务临时状态枢纽,需按消息队列、缓存和原子状态三重角色设计。选型用List实现任务分发及延迟重试,Stream用于事件广播与位点回溯。go-redis/v8需配置MinIdleConns、MaxRetries及超时。数据写入应JSON序列化并带type标签、设合理TTL、将关键字段提至顶层。消费通过原子GET+DEL或processedkey

    TP8.0 高并发下库存超卖?Redis 原子递减结合数据库乐观锁控制
    TP8.0 高并发下库存超卖?Redis 原子递减结合数据库乐观锁控制

    在高并发秒杀场景下,利用Redis的减库存原子操作预扣减库存拦截超卖请求,再通过数据库乐观锁(版本号与库存校验)确保最终一致性,异常时回滚Redis库存并借助Lua脚本保证原子性,从而有效防止库存超卖。

    如何在 Go 中利用 go-redis 执行 Lua 脚本优化逻辑
    如何在 Go 中利用 go-redis 执行 Lua 脚本优化逻辑

    在Go中使用go-redis执行Lua脚本可借助原子性解决竞态问题,通过redis.Script封装脚本并自动处理SHA1缓存与重试。需注意KEYS必须为非空切片且所有键在Cluster模式下落在同一slot,ARGV以字符串传入并由tonumber转换。返回值需先检查错误再调用Val(),避免panic。

    TP6.0 基于 Redis SetNX 实现的简单互斥锁机制【并发】
    TP6.0 基于 Redis SetNX 实现的简单互斥锁机制【并发】

    先看一个典型场景:电商秒杀、库存扣减、定时任务重复调度——这些并发冲突在 TP6 应用里屡见不鲜。用 Redis 的 SETNX 做互斥锁,确实是轻量又直接的方案,但“能用”和“稳妥”之间,隔着三层硬功夫:原子加锁、身份校验、合理超时。这三条,差一条就翻车。 很多人第一次上手,直接写 SETNX 加

    TP6.0 如何处理高并发抢购?Redis 原子锁与队列削峰详解【秒杀】
    TP6.0 如何处理高并发抢购?Redis 原子锁与队列削峰详解【秒杀】

    高并发抢购中,Redis的DECR原子操作可安全扣库存;配合think-queue异步削峰,接口仅扣库存和推消息;分布式锁需用SETNXEX加唯一标识,释放时用Lua脚本校验;成功资格后须以数据库事务双写为准,失败时补回Redis库存。

    Golang 实现基于 Redis 的延时任务队列
    Golang 实现基于 Redis 的延时任务队列

    基于Redis的ZSET实现延时队列需解决并发重复消费、失败重试混乱、精度不足及内存爆炸等问题。通过Lua脚本保证取删原子性,使用毫秒级时间戳,对临时错误采用指数退避重试,永久错误记入独立哈希表,并限制最大延迟、定期清理过期任务、使用紧凑序列化格式。

    RedisInsight怎么修改Key的过期时间 Redis操作方法【步骤】
    RedisInsight怎么修改Key的过期时间 Redis操作方法【步骤】

    操作 Redis 的时候,改个 Key 的过期时间其实是个高频场景。特别是做运维排查或者临时调试那会儿,谁也不想反复切命令行窗口、背那些命令参数。好在 RedisInsight 这个图形工具把这事儿做得很顺手——三种方式任选,总有一种合你胃口。 在动手前,先确认一下 Key 当前的 TTL 状态是个

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。

    即将离开本站
    您即将前往第三方网站,请确认是否继续?