七天玩转Redis

2023-11-16

Redis五大数据类型

Redis的五大数据类型分别是String、List、Set、Hash、Zset

1)String字符串

String类型是Redis中最常用的类型,也是日常生活中应用十分广泛的数据类型。接下来讲解String类型的操作:

注意:还是老样子,我们在启动Redis客户端前,一定确保Redis服务器是开启状态,即开启服务器cmd窗口要保留不能关掉!

  • 设置key的值
    Redis中给string类型的数据设置指定key的方法就是最基本的设置key-value的方法。
    语法:SET key value
    在这里插入图片描述

  • 获取key的值
    语法:GET key
    例如我们获取刚才输入的索引为k1,值为v1的数据,如果该索引存在,那么将会返回对应的值,如果不存在就会返回(nil)也就是null的意思。
    在这里插入图片描述

  • 返回key中字符串的子串
    使用getrange指令查找指定key值中子串
    GETRANGE key start end

  • key为字符串的索引

  • start为截取的起始下标

  • end为截取的终止下标
    例如我们mykey中的值为diviner,如果我们要截取到末尾,我们可以将end设置为-1
    如果我们end设定的值大于原本字符串长度则只会返回到字符串末尾的字符。
    在这里插入图片描述

  • 获取多个指定key的值
    与GET命令不同,GET命令只能获取一个key对应的值,而MGET命令则可以用于获取多个key的值
    MGET key1 [key2...]
    在这里插入图片描述

  • 返回key对应字符串的长度
    语法:STRLEN key
    在这里插入图片描述

  • 设置一个或多个键值对
    MSET key1 value1 [key2 value2 ...]
    在这里插入图片描述
    MSETNX key1 value1 [key2 value2 ...]
    msetnx指令只能在key不存在的情况下才能设置,否则该指令输入无效。
    在这里插入图片描述

  • 将key中所存储的数值加一
    如果key对应的值不是数的话,则不能加一返回错误信息,语法:
    INCR key
    在这里插入图片描述
    给key加指定数量的值:
    INCRBY key increment
    在这里插入图片描述

  • 将key中所存储的数值减一
    DECR key
    在这里插入图片描述
    将key所存储的值减指定数值
    DECRBY key increment
    在这里插入图片描述

  • 字符串追加
    APPEND key value
    在指定key的值后面再加上value
    在这里插入图片描述

2)Hash哈希

Hash类型在我看来类似于C语言中struct结构体的亚子,Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。

Redis 中每个 hash 可以存储 2 32 − 1 2^{32}-1 2321 键值对(40多亿)。在这里插入图片描述

几个常用的命令:

  • 设置Hash数据
    设置Hash数据使用的指令是HMSET,H代表Hash,M代表Map,语法:
    HMSET key fieId1 value1 [fieId2 value2...]
    key为这个Hash数据对应的唯一性索引
    field为下面存储的一个键值对的键
    value为该键对应的值

    我们以key-value对进行存储
    例如我们设置一个key为myhash,存储的field【key-value】分别为name-Diviner,sex-man、age-18:
    在这里插入图片描述

  • 获取指定哈希表中所有的字段和值
    我们使用hgetall取出该hash中所有的数据,语法如下:
    HGETALL key
    在这里插入图片描述
    正如图所示,一行为key值一行为value。

  • 获取存储在哈希表中指定字段的值
    语法:HGET key field
    在这里插入图片描述

  • 删除一个或多个哈希表字段
    语法:HDEL key field1 [field2...]
    key为指定的哈希表的索引
    field为要删除的值对应的字段,如果要删除多个就以空格分开
    在这里插入图片描述在这里插入图片描述

  • 获取哈希表中字段的数量
    语法:HLEN key
    在这里插入图片描述

  • 获取哈希表中的所有字段
    语法:HKEYS key返回的是所有key-value中的key
    在这里插入图片描述

  • 获取哈希表中所有的值
    语法:HVALS key返回的是所有key-value中的value
    在这里插入图片描述

3)List列表

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

  • 将一个或多个元素插入列表表头
    也就是耳熟能详的push操作这里是Left左端插入即lpush
    语法:LPUSH key value1 [value2...]
    在这里插入图片描述

  • 将一个或多个元素插入列表表尾
    表尾插入即从右端Right插入,即rpush
    语法:RPUSH key value1 [value2...]
    在这里插入图片描述

此时我们的mylist表中元素排列为:{t3,t2,t1,t4,t5,t6}

  • 获取列表长度
    语法:LLEN key
    在这里插入图片描述

  • 通过索引获取列表中的元素
    语法:LINDEX key index
    index为指定的下标
    在这里插入图片描述

  • 移除并获取列表第一个元素
    pop操作。移除表头一个元素并返回出移除的值
    语法:LPOP key
    在这里插入图片描述

  • 移除并获取列表最后一个元素
    移除表尾最有一个元素并返回
    语法:RPOP key
    在这里插入图片描述

4) Set集合

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

集合对象的编码可以是 intset 或者 hashtable。

Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

  • 向集合中添加一个或多个成员
    语法:SADD key member1 [member2...]
    在这里插入图片描述

  • 获取集合中成员的个数
    语法:SCARD key
    在这里插入图片描述

  • 返回第一个集合与其他集合之间的差异
    语法:SDIFF key1 [key2..]
    在这里插入图片描述

    注意这里返回的是第一个的与第二个的不同,
    第一个myset : {m1,m2,m3}
    第二个myset2: {m2,m3,aaa,bbb}
    返回的是 ‘m1’

  • 返回所给定所有集合的交集
    语法:SINTER key1 [key2...]
    在这里插入图片描述

    注意这里返回的是第一个与第二个的交集,
    第一个myset : {m1,m2,m3}
    第二个myset2: {m2,m3,aaa,bbb}
    返回的是 “m2”,“m3”

  • 返回集合中的所有元素
    语法:SMEMBERS key
    在这里插入图片描述

5) ZSet有序集合(sorted set)

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

  • 向有序集合中添加一个或多个成员
    语法:ZADD key score1 member1 [score2 member2...]

    • key为有序集合的索引
    • score为插入成员的分数,
    • member为对应的成员,如果插入多个成员,则以空格分隔
      在这里插入图片描述
  • 获取有序集合的成员数
    语法:ZCARD key
    在这里插入图片描述

  • 计算有序集合中指定区间分数的成员数
    语法:ZCOUNT key min max

    • min为区间的最小值
    • max为区间的最大值
      在这里插入图片描述
  • 根据分数返回有序集合指定区间内的成员
    语法:ZRANGEBYSCORE key min max [WITHSCORES]

    • min表示score的最小值
    • max表示score的最小值
    • [WITHSCORES]是可选的,表示是否带上对应的score

    在这里插入图片描述

  • 移除有序集合中的一个或多个元素
    语法:ZREM key member1 [member2...]
    在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

七天玩转Redis 的相关文章

  • SignalR 无法连接到 SSL 上的 Azure Redis

    我目前在 Azure 上托管我的 redis 缓存服务器 并让 signalR 依赖它作为骨干 使用以下内容 GlobalHost DependencyResolver UseRedis 服务器 端口 密码 eventKey 这可以在端口
  • 使用 Redis 命令 incr 和 expire 时的竞争条件

    根据redis文档 http redis io commands incr http redis io commands incr 在段落模式 速率限制器 2 较短的版本代码 value INCR ip IF value 1 THEN EX
  • Redis Docker compose无法处理RDB格式版本10

    我无法在 docker compose 文件中启动 redis 容器 我知道docker compose文件没问题 因为我的同事可以成功启动项目 我读到有一个删除 dump rdb 文件的解决方案 但我找不到它 我使用Windows机器 任
  • Redis发布/订阅:查看当前订阅了哪些频道

    我目前有兴趣查看我拥有的 Redis 发布 订阅应用程序中订阅了哪些频道 当客户端连接到我们的服务器时 我们将它们注册到如下所示的通道 user user id 这样做的原因是我希望能够看到谁 在线 目前 我在不知道客户端是否在线的情况下盲
  • Lua中按字符分割字符串

    我有像这样的字符串 ABC DEF 我需要将它们分开 字符并将两个部分分别分配给一个变量 在 Ruby 中 我会这样做 a b ABC DEF split 显然Lua没有这么简单的方法 经过一番挖掘后 我找不到一种简短的方法来实现我所追求的
  • Redis Cluster 与 Pub/Sub 中的 ZeroMQ,用于水平扩展的分布式系统

    如果我要设计一个巨大的分布式系统 其吞吐量应随系统中的订阅者数量和通道数量线性扩展 哪个会更好 1 Redis集群 仅适用于Redis 3 0 alpha 如果是集群模式 您可以在一个节点上发布并在另一个完全不同的节点上订阅 消息将传播并到
  • 使用 Celery 通过 Gevent 进行实时、同步的外部 API 查询

    我正在开发一个 Web 应用程序 该应用程序将接收用户的请求 并且必须调用许多外部 API 来编写对该请求的答案 这可以直接从主 Web 线程使用 gevent 之类的东西来扇出请求来完成 或者 我在想 我可以将传入的请求放入队列中 并使用
  • 如何使redis中的“HSET”子键“过期”?

    我需要使 Redis 哈希中所有超过 1 个月的密钥过期 这不可能 https github com antirez redis issues 167 issuecomment 2559040 为了保持 Redis 简单 https git
  • StackExchange.Redis的正确使用方法

    这个想法是使用更少的连接和更好的性能 连接会随时过期吗 对于另一个问题 redis GetDatabase 打开新连接 private static ConnectionMultiplexer redis private static ID
  • 想要在后台不间断地运行redis-server

    我已经下载了 redis 2 6 16 tar gz 文件并安装成功 安装后我运行 src redis server 它工作正常 但我不想每次都手动运行 src redis server 而是希望 redis server 作为后台进程持续
  • Scala 使用的 Redis 客户端库建议

    我正在计划使用 Scala 中的 Redis 实例进行一些工作 并正在寻找有关使用哪些客户端库的建议 理想情况下 如果存在一个好的库 我希望有一个为 Scala 而不是 Java 设计的库 但如果现在这是更好的方法 那么仅使用 Java 客
  • 如何在Redis中只保存一个数据库?

    我是 Redis 新手 有一个与备份相关的问题 目前 我有一个实例在 Windows 服务器上运行 在这个实例中 我当前有一项 工作 将数据存储在一个数据库中 我不想备份这些数据 我必须创造一份新工作 我的第一个想法是将数据存储在另一个数据
  • 使用redis进行树形数据结构

    我需要为基于树的键值开发一个缓存系统 与Windows注册表编辑器非常相似 其中缓存键是字符串 表示树中到值的路径 可以是原始类型 int string bool double 等 或子树本身 例如 key root x y z w val
  • 如何将“.csv”数据文件导入Redis数据库

    如何将 csv 数据文件导入 Redis 数据库 csv 文件中包含 id 时间 纬度 经度 列 您能否向我建议导入 CSV 文件并能够执行空间查询的最佳方法 这是一个非常广泛的问题 因为我们不知道您想要什么数据结构 您期望什么查询等等 为
  • 在 Spring 4 中干掉通用的 RedisTemplate

    我读到你可以拥有 Autowired从 Spring 4 开始泛型 这太棒了 我有一个摘要RedisService我想参加的课程 Autowired一个通用的 RestTemplate 如下所示 public abstract class
  • Laravel Redis 配置

    我目前正在使用 Laravel 和 Redis 创建一个应用程序 几乎一切都工作正常 我按照文档中的说明扩展了身份验证 用户可以订阅 登录 注销 我可以创建内容 所有内容都存储在 Redis 中 但我有一个问题 我无法运行 php arti
  • ServiceStack.Redis:无法连接:sPort:

    我经常得到 ServiceStack Redis 无法连接 sPort 0 或 ServiceStack Redis 无法连接 sPort 50071 或其他端口号 当我们的网站比较繁忙时 就会出现这种情况 Redis 本身看起来很好 CP
  • Redis 在键过期时更新排序集

    我有一个 Redis 服务器 其中包含一组键值对和一个排序集 提供这些键值对的键的索引 键值对可以进入 已完成 状态 此时需要在 1 小时后删除它们 这可以通过在键上设置到期时间来简单地实现 但从排序集中清除它们似乎更成问题 我可以有一个过
  • 如何通过ARM模板输出返回Redis的primaryKey?

    我正在尝试借助下面列出的 ARM 模板来部署 Redis 然后返回其主密钥 Azure 门户中 Redis 的 访问密钥 gt 主 下可用的秘密字符串 但是 我从管道 AzureResourceManagerTemplateDeployme
  • 为什么Redis SET性能优于GET?

    根据Redis基准 http redis io topics benchmarkss Redis 可以执行 100 000 SET 操作 秒和 80 000 GET 操作 秒 Redis 是一种内存数据库 这似乎令人惊讶 因为通常人们会认为

随机推荐

  • go 流媒体服务搭建-01

    这里写自定义目录标题 go 流媒体服务搭建 01 go 流媒体服务搭建 01 新建go 项目 配置go 版本1 19 新增main go package main func main 新增go mod 文件 go mod init mym7
  • C语言之路---三大结构

    目录 1 选择结构 1 1 if else语句 1 2 switch case 语句 1 3 条件运算符 2 循环结构 2 1 whi
  • 直接修改数据库表数据

    直接修改数据库表中的数据 1 写SQL语句 select from 表名 for update 如下图所示 写好SQL后点击执行按钮或者直接按F8 2 执行完SQL后选择行上的按钮 让行信息变成可编辑状态 如下图所示 3 可按增加或者删除一
  • lambda qt 参数 槽函数_Qt界面开发(3)

    参考 QT界面开发 哔哩哔哩 干杯 bilibili www bilibili com 接 juliar Qt界面开发 1 juliar Qt界面开发 2 一 带参数的信号 前面关于信号signal 我们了解到 signals是Qt扩展的关
  • C++的STL库,vector sort排序时间复杂度 及常见容器比较

    http www cnblogs com sthv p 5511921 html http www 169it com article 3215620760 html http www cnblogs com sharpfeng archi
  • js求三个数的最大值和最小值

    如何求三个数的最大值和最小值 var x 9 y 12 c 50 var max x gt y x gt c x c y gt c y c var min x lt y x lt c x c y lt c y c console log m
  • Sharp Memory LCD (ls013b7dh03)驱动

    lcd main c include ls013b7dh03 h include oled font h void lcd main void lcd init lcd clear lcd print char 16 16 a 16 1 l
  • typeAliases设置别名会爆红?sql映射写sql语句没有提示?

    typeAliases设置别名会爆红 明明设置了别名 为什么还是爆红
  • 【MVC】快递信息管理系统

    文章目录 项目介绍 开发环境 技术栈 使用说明 技术要求 思路过程 难点及解决方法 效果展示 总结 项目介绍 该项目主要介绍基于快递信息的增删改查 什么是MVC MVC是三个单词的首字母缩写 它们是Model 模型 View 视图 和Con
  • QT信号和槽的实现原理

    信号和槽是qt用于对象之间通信的核心机制 其目的类似于当一个动作发生的时候 需要对这个动作做出相应的处理 类似的还有借助于函数指针的回调机制 通过回调函数完成对此动作的操作 但是如果对一个庞杂的系统 这种回调函数的维护是相当的麻烦和危险的
  • 聚簇索引、二级索引、非聚簇索引 ?

    聚簇索引与非聚簇索引分别是MySQL不同存储引擎组织索引和数据存储的两种不同方式 按照官方文档的说法 InnoDB里面 除了聚簇索引之外其他都是二级索引 也就是没有非聚簇索引 而MyISAM使用的索引都是非聚簇索引 聚簇索引 将记录和文件一
  • Visual Studio项目属性配置

    此处的 项目属性 指的是菜单栏中 项目 下拉列表中的最后一个选项呈现的内容 界面如下图所示 首先要说明的是 配置项目属性不仅仅只有从菜单栏中选择这一种方法 还可以在 属性管理器 中进行配置 后者的优势在于 一个常用的 完整的属性配置可以方便
  • java web tcp 长连接_netty通过websocket实现服务器与客户端的长连接

    server端代码import com chinadaas bio chinadaasbio webSocket handler ServerHandler import io netty bootstrap ServerBootstrap
  • pyspark 连接远程hive集群配置

    今天本地spark连接远程hive集群 直接把配置导入进去 本地直接应用远程环境 1 安装spark 设置spark环境变量 2 拿到远程集群配置文件 将配置文件放在spark conf 目录下 xml 一共五个文件 3 将mysql co
  • FISCO BCOS环境搭建

    FISCO BCOS FISCO BCOS 环境搭建 系统环境 Ubuntu 16 04 安装依赖openssl curl ubuntu sudo apt install y openssl curl 在fisco bcos操作目录下执行下
  • Vscode配置代码片段不生效解决方法(仅仅改一下json配置就行了呜呜呜)

    Vscode配置代码片段不生效解决方法 仅仅改一下json配置就行了呜呜呜 东非不开森的主页 也许 不负光阴就是最好的努力 而努力就是最好的自己 如有错误或不足之处 希望可以指正 非常感谢 代码生成器 地址 方法 文件 gt 首选项 gt
  • nodejs中npm 安装无法进行及切换淘宝源的方法

    初步学习nodejs过程中 npm安装的时候进度条死活不懂 查了下资料估计是墙的原因 第一步解决方法 大家都建议安装包管理工具nrm 然后切换到淘宝源 操作 npm install nrm g 结果悲剧了 进度条还是一动不动 继续查找方法
  • 练习:银行复利计算(用 for 循环解一道初中小题)

    Python 官网 https www python org 这里 才 python 前沿 可惜是英文原版 所以 我要练习英文阅读 我的CSDN主页 My Python 学习个人备忘录 我的HOT博 老齐教室 自学并不是什么神秘的东西 一个
  • Redis简述

    1 什么是redis redis是一个nosql not only sql 不仅仅只有sql 数据库 也是一个非关系型数据库 2 redis的应用领域 1 分布式缓存 2 分布式session 3 保存博客或者论坛的留言回复等 总之就是用在
  • 七天玩转Redis

    文章目录 Redis五大数据类型 1 String字符串 2 Hash哈希 3 List列表 4 Set集合 5 ZSet有序集合 sorted set Redis五大数据类型 Redis的五大数据类型分别是String List Set