news 2026/4/23 15:34:08

Redis 核心:概念理解与五大数据结构

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Redis 核心:概念理解与五大数据结构

Redis(Remote Dictionary Server)

NoSQL(非关系型数据库)

非关系型数据库的数据是非结构化的(没有固定的结构)、无关联的(没有关系的创建和维护)、非sql(没有固定的语法)、事务特性BASE

Redis引入

Redis是一个基于内存的键值型NoSQL数据库。

特征:

  • 键值型,value支持多种不同的数据结构,功能丰富。
  • 单线程,每个命令具备原子性。
  • 低延迟,速度快(基于内存、IO多路复用、良好的编码)。
  • 支持数据的持久化。
  • 支持主从集群、分片集群。
  • 支持多语言客户端。

Redis支持的数据结构

  • 字符串 String
  • 列表 List
  • 集合 Set
  • 有序集合 Sorted Set
  • 哈希 Hash
  • 消息队列 Stream
  • 地理空间 Geospatial
  • HyperLogLog
  • 位图 Bitmap
  • 位域 Bitfield

Redis的使用方式

  • CLI(Command Line Interface) 命令行工具
  • API(Application Programming Interface) 编程语言接口
  • GUI(Graphical User Interface) 图形化界面

Redis优点

  • 性能极高
  • 数据类型丰富,单键值对最大支持512M大小的数据
  • 简单易用,支持所有主流编程语言
  • 支持数据持久化,主从复制,哨兵模式等高可用特性

Redis登录

redis-server启动服务端

redis-cli启动客户端(这里的启动的客户端得到的中文会显示二进制

redis-cli --raw启动客户端(这里启动的客户端得到的中文会显示中文

Redis的Key操作

序号命令描述
1del key用于在key存在时删除key
2dump key序列化给定的key,并返回被序列化的值
3exists key检查给定的key是否存在
4expire key seconds为给定的key设置过期时间,单位为秒
5expireat key timestamp为 key 设置过期时间。接受的时间参数是 UNIX 时间戳(Unix时间戳是从1970年1月1日00:00:00 UTC开始计算的秒数)
6pexpire key milliseconnds设置key的过期时间以毫秒计
7pexpireat key milliseconds-timestamp设置key过期时间的时间戳以毫秒计
8keys pattrern查找所有符合给定模式(pattern)的key,比如keys *
9move key db将当前数据库的key移动到给定的数据库db中
10persist key移出key的过期时间,将key持久保持
11pttl key以毫秒为单位返回key的剩余的过期时间
12ttl key以秒为单位,返回给定key的剩余生存时间ttl
13randomkey从当前数据库中随机返回一个key
14rename key newkey修改key的名称
15renamenx key newkey当newkey不存在时,将key改名为newkey
16type key返回key所储存的值的类型
17scan n迭代遍历key,会返回下一个迭代的起始索引和本次迭代的key,n=0,1,2,3,…
18flushall删除全部键
19clear清空命令行

Redis数据结构

字符串:

序号命令描述
1set key value设置键值
2mset key1 value1 key2 value2...批量设置键值
3setnx key value只有当键不存在时设置成功,否则不做任何操作
4msetnx key1 value1 key2 value2 ...只有当全部的key都不存在时设置成功,否则不做任何操作
5setex key seconds value设置带有过期时间的键,单位s
6psetex key milliseconds value设置带有过期时间的键,单位ms
7get key得到键值
8mget key1 key2...批量获取键值
9getrange key start end返回key中字符串值的子字符
10getset key value将给定的key的值设为value,并返回key的旧值
11setrange key offset value用value参数覆盖所存储的字符串,从offest偏移开始
12incr key自增1
13incrby key n自增n
14incribyfloat key n自增一个小数n
15decr key自减1
16decrby key n自减n
17strlen key返回key所存储的字符串值的长度
18append key value将指定字符串追加到key所存储的字符串末尾

列表:

序号1命令描述
1lpush key value1 value2...将一个或多个值插入到列表头部
2rpush key value1 value2...将一个或多个值插入到列表尾部
3lpushx key value将一个值插入到已存在的列表头部,列表不存在则操作无效
4rpushx key value将一个值插入到已存在的列表尾部,列表不存在则操作无效
5linsert key before/after value1 value2在列表的一个元素前或后插入元素,当指定元素不存在于列表则操作无效,当列表不存在时,不执行任何操作。
6brpoplpush list1 list2 timeout从list1中取最后一个值,弹出并插入到list2的头部,如果list1为空则阻塞等待timeout直到超时或有元素
7rpoplpush list1 list2从list1中取最后一个值,弹出并插入到list2的头部,如果list1为空则返回nil
8blpop list1 list2... timeout同时监听一个或多个列表,谁先有元素先从头部弹出并获取,如果没有元素阻塞等待timeout直到超时或有元素
9brpop list1 list2... timeout同时监听一个或多个列表,谁先有元素先从尾部弹出并获取,如果没有元素阻塞等待timeout直到超时或有元素
10lpop key移除并获取列表的第一个元素
11rpop key移除并获取列表的最后一个元素
12lindex key index通过索引获取列表中的元素
13ltrim key start stop对列表进行修剪,只保留选中区间内的元素
14lrange key start stop获取列表指定范围内的元素
15llen key获取列表长度
16lrem key count valuecount > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。 count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。 count = 0 : 移除表中所有与 VALUE 相等的值。
17lset key index value通过索引来设置一个列表的值,当索引超出范围时,返回一个错误

集合:

序号命令描述
1sadd key member1 member2向集合中添加一个或多个成员
2scard key获取集合的成员数
3sdiff key1 key2...返回第一个集合和其他集合的差集
4sdiffstore key0 key1 key2...返回第一个集合和其他集合的差集并存储在key0中
5sinter key1 key2...返回给定集合的交集
6sinterstore key0 key1 key2...返回给定集合的交集并存储在key0中
7sunion key1 key2...返回给定集合的并集
8sunionstore key0 key1 key2...返回给定集合的并集并存储在key0中
9sismember key member判断集合中是否有member元素
10smembers key返回集合中所有成员
11smove key1 key2 member将member元素从集合1移动到集合2
12spop key移除并返回集合中的一个随机元素
13srandmember key [count]返回集合中一个或多个随机元素
14srem key member1 member2...移除集合中一个或多个成员
15sscan key n迭代遍历集合中的元素

有序集合:

有序集合和集合的区别:有序集合每个元素都会关联一个分数,根据分数大小进行排序。

默认排序从小到大

序号命令描述
1zadd key score1 member1 score2 member2...向有序集合中添加一个或多个成员,或更新已经存在成员的分数
2zcard key获取有序集合的成员数
3zcount key min max计算在有序集合中指定分数区间的成员数
4zlexcount key min max计算在有序集合中指定字典区间的成员数
5zrange key start stop返回有序集合指定区间的成员,分数从低到高
6zrangebylex key min max返回有序集合中指定字典区间的成员
7zrangebyscore key min max返回有序集合中指定分数区间的成员
8zrank key member返回有序集合指定成员的索引
9zincrby key n member在有序集合中对指定成员的分数加n
10zunionstore key0 n key1 key2...计算给定的n个有序集合的并集并将结果存储在key0中
11zinterstore key0 n key1 key2...计算给定的n个有序集合的交集并将结果存储在key0中
12zrem key member1 member2...移除有序集合中的一个或多个成员
13zremrangebylex key min max移除有序集合中给定字典区间的成员
14zremrangebyrank key start stop移除有序集合中给定排名区间的成员
15zremrangebyscore key min max移除有序集合中给定分数区间的成员
16zrevrange key start stop返回有序集合中指定区间内的成员,分数从高到低
17zrevrangebyscore返回有序集合中指定分数区间内的成员,分数从高到低
18zrevrank key member返回有序集合中指定成员的排名,分数从高到低
19zscore key member返回有序集合中某个成员的分数值
20zscan key n迭代遍历有序集合中的元素

哈希Hash:

序号命令描述
1hset key field value将哈希表key中的字段field的值设为value
2hsetnx key field value当field字段不存在时,将哈希表key中的字段field设为value
3hmset key field1 value1 field2 value2...批量设置哈希表key中的多个字段field的值为value
4hget key field获取哈希表key中的字段field的值
5hmget key field1 field2...获取哈希表key中指定的字段的值
6hgetall key获取哈希表key中所有的字段和值
7hkeys key获取哈希表key中所有的字段
8hvals key获取哈希表key中所有的值
9hdel key field1 field2...删除哈希表key中一个或多个字段
10hexists key field查看哈希表key中,指定的字段是否存在
11hlen key获取哈希表key中字段的数量
12hincrby key field n为哈希表key中指定字段的整数加上n
13hincrbyfloat key field n为哈希表key中指定的浮点数加上小数n
14hscan key n迭代遍历哈希表key的键值对
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 18:58:22

连锁门店数字化平台核心功能与适用场景解析

当下&#xff0c;零售行业竞争越发激烈&#xff0c;连锁门店的运营效率&#xff0c;以及管理精细化程度&#xff0c;直接决定了它的市场竞争力。传统管理模式依靠人工操作&#xff0c;还有分散的系统&#xff0c;常常致使信息孤岛出现&#xff0c;数据滞后&#xff0c;协同困难…

作者头像 李华
网站建设 2026/4/23 12:47:54

Reactor线程池切换publishOn与subscribeOn

在 Reactor&#xff08;Project Reactor&#xff09;中&#xff0c;publishOn 和 subscribeOn 是用于 切换执行线程&#xff08;调度器&#xff09; 的两个操作符&#xff0c;但它们的行为和用途 截然不同。下面是它们的详细区别与使用说明。 &#x1f9e0; 一句话理解 **subs…

作者头像 李华
网站建设 2026/4/17 3:53:23

亲测好用10个AI论文网站,继续教育学生轻松搞定毕业论文!

亲测好用10个AI论文网站&#xff0c;继续教育学生轻松搞定毕业论文&#xff01; AI 工具让论文写作不再难 在当前的学术环境中&#xff0c;越来越多的继续教育学生开始借助 AI 工具来提升论文写作效率。尤其是 AI 降重工具的出现&#xff0c;不仅有效降低了 AIGC 率&#xff…

作者头像 李华
网站建设 2026/4/23 13:03:59

一文掌握 Spring AI:集成主流大模型的完整方案与思考

一文掌握 Spring AI&#xff1a;集成主流大模型的完整方案与思考 Spring AI 是 Spring 生态中一个新兴的框架&#xff0c;旨在简化 Java/Spring Boot 应用与主流大语言模型&#xff08;Large Language Models, LLM&#xff09;的集成。它提供了一套统一的抽象接口&#xff0c;…

作者头像 李华
网站建设 2026/4/7 13:15:56

面了十几家公司测试岗,我终于悟了,面试无非就是这些题

测试岗的面试其实都是大同小异的&#xff0c;这里我收集整理了185道高频面试题&#xff0c;希望对在找工作或者准备跳槽的各位小伙伴有所帮助&#xff01; 一. 测试基础 1.如何制定测试计划 参考答案&#xff1a; 测试计划包括测试目标、测试范围、测试环境的说明、测试类型…

作者头像 李华
网站建设 2026/4/8 22:32:57

Agent设计思路:从“智能”到“智慧”的企业级解决方案

一、设计背景与核心矛盾AI智能体的强大之处在于其基于大模型的任务分解、工具调用与自主规划能力。然而&#xff0c;这种基于概率生成的规划路径天然具有不确定性&#xff0c;难以满足企业对可预测结果、可审计轨迹和安全边界的需求。因此&#xff0c;JBoltAI的设计思路聚焦于如…

作者头像 李华