七天玩转Redis

2023-11-03

1. string类型

设定指定的key值

语法格式: set key value
key为键,value为值

127.0.0.1:6379[6]> set k1 v1
OK

获取指定key的值

get key

127.0.0.1:6379[6]> get k1
"v1"

返回key中字符的子串

GETRANGE key start end
start是截取开始的下标,end是截取结束的下标

127.0.0.1:6379[6]> getrange k2 2 5
"llo"

如果end的值超过了字符串的长度,那么还是截取到结尾为止,并且字符串的下标起始位置为0。

获取多个给定key的值

  上面我们讲了GET,但GET只能获取一个key的值,如果我们要一次获取多个,那么我们就要用MGET。

格式如下:
MGET key1 key2 key3…

127.0.0.1:6379[6]> mget k1 k2 k3
1) "v1"
2) "hello"
3) "world"

返回key对应字符的长度

格式如下:
STRLEN key

127.0.0.1:6379[6]> strlen k1
(integer) 2
127.0.0.1:6379[6]> strlen k2
(integer) 5

设置多个键值对

语法格式:
MSET key1 value1 key2 value2 key3 value3…

127.0.0.1:6379[6]> mset k4 v4 k5 v5 k6 v6
OK
127.0.0.1:6379[6]> mget k4 k5 k6
1) "v4"
2) "v5"
3) "v6"

将key中的数值加一
这个命令可以让我们存储的字符的值加一,并返回加后的结果,但如果key对应的不是数字的话,就会返回错误信息。

语法格式:
INCR key

127.0.0.1:6379[6]> set k7 10
OK
127.0.0.1:6379[6]> incr k7
(integer) 11
-- 如果不是数字的话
127.0.0.1:6379[6]> incr k1
(error) ERR value is not an integer or out of range

同样我们还可以指定数值进行增加

语法格式:
INCRBY key increment
increment是指需要增加的值

127.0.0.1:6379[6]> incrby k7 10
(integer) 21

将key的数值减一

语法格式:
DECR key

127.0.0.1:6379[6]> decr k7
(integer) 20

指定数值做减法

DECRBY key

127.0.0.1:6379[6]> decrby k7 10
(integer) 10

字符串追加
我们通过APPEND进行字符串的追加,格式如下:

APPEND key value

127.0.0.1:6379[6]> get k2
"hello"
127.0.0.1:6379[6]> append k2 ' world'
(integer) 11
127.0.0.1:6379[6]> get k2
"hello world"
127.0.0.1:6379[6]>

2. Hash类型

Hash类型其实就是string类型的映射表,之前我们都是单个单个的用key-value来存储数据,而Hash则可以存储多个key-value,这里我们用field-value来表示。
在这里插入图片描述
设置一个Hash数据
我们用HMSET来设置Hash数据,其中,H可以理解为Hash,M为Map,语法格式:

HMSET key field1 value1 field2 value2 …
key为这个Hash数据的一个索引
field为键
value为值

127.0.0.1:6379[6]> hmset h1 k1 v1 k2 v2 k3 v3
OK

获取指定hash表中的所有字段和值

语法格式:

HGETALL key

127.0.0.1:6379[6]> hgetall h1
1) "k1"
2) "v1"
3) "k2"
4) "v2"
5) "k3"
6) "v3"

获取hash表中指定字段的值

语法格式:

HFGET key field

127.0.0.1:6379[6]> hget h1 k1
"v1"

删除一个或多个hash表字段
这个操作是用HDEL,该命令可以删除指定hash表中的指定字段及其对应的值,格式如下:

HDEL key field1 field2 …

127.0.0.1:6379[6]> hdel h1 k1 k2 k3
(integer) 3

获取hash表中字段的数量

HLEN key

127.0.0.1:6379[6]> hlen h1
(integer) 3

获取hash表中的所有字段
该命令可以获取指定哈希表中所有的字段,但是不返回字段对应的值,格式如下:

HKEYS key

127.0.0.1:6379[6]> hkeys h1
1) "k1"
2) "k2"
3) "k3"

获取哈希表中所有的值
我们用HVALS获取所有值,但不获取字段,语法格式:

HVALS key

127.0.0.1:6379[6]> hvals h1
1) "v1"
2) "v2"
3) "v3"

List类型

  List类型相当于数据结构里的链表,可以对其进行头插和尾插。

将一个或多个元素
我们用LPUSH来从头部插入,L表示left。
语法格式:

LPUSH key value1 …
value可以插入多个,用空格隔开

127.0.0.1:6379[6]> lpush l1 test1 test2 test3
(integer) 3

将一个或多个元素插入列表尾部
用RPUSH从尾部插入,R表示right,语法格式:

RPUSH key value1 …

127.0.0.1:6379[6]> rpush l1 test4 test5 test6
(integer) 6

**注意:**经过以上的两轮插入,其排列为test3 test2 test1 test4 test5 test6

获取列表长度
如果我们想要查看指定列表中有多少个元素,获取列表的长度,那么可以使用LLEN命令,格式如下:

LLEN key

127.0.0.1:6379[6]> llen l1
(integer) 6

通过索引获取列表中的元素
我们可以用LINDEX来通过下标获取元素,格式如下:

LINDEX key index
index为对应下标

127.0.0.1:6379[6]> lindex l1 0
"test3"
127.0.0.1:6379[6]> lindex l1 5
"test6"

移除并获取第一个元素
LPOP可以益处第一个元素,并将其返回,语法格式:

LPOP key

127.0.0.1:6379[6]> lpop l1
"test3"

此时l1中就没有test3这个值了

移除并获取最后一个元素
语法格式:

RPOP key

127.0.0.1:6379[6]> rpop l1
"test6"

Set集合

set就是定义一个集合,集合中可以存放数据,且数据是无序且唯一的,不可重复。

添加一个或多个成员
向集合中添加元素的命令是SADD,返回值是插入的成员的个数,格式如下:

SADD key member1 …

127.0.0.1:6379[6]> sadd s1 t1 t2 t3
(integer) 3

获取集合中成员的个数
指令是SCARD,格式如下:

SCARD key

127.0.0.1:6379[6]> SCARD s1
(integer) 3

返回第一个集合与其他集合之间的差异

SDIFF key1 key2 …

127.0.0.1:6379[6]> sadd s2 t1 b ad
(integer) 3
127.0.0.1:6379[6]> sdiff s1 s2
1) "t3"
2) "t2"

s1[t1, t2, t3], s2[t1, b, ad],s1相比于s2,s1有t2和t3.

返回所给定所有集合的交集

SINTER key1 …

127.0.0.1:6379[6]> sinter s1 s2
1) "t1"

返回集合中的所有元素

SMEMBERS key

127.0.0.1:6379[6]> smembers s1
1) "t3"
2) "t1"
3) "t2"

ZSet

ZSet和Set类似,也是不允许重复成员的出现,但ZSet的成员是有序的,ZSet集合中的每个成员都会关联一个double类型的分数(可以理解为权重),而ZSet正是通过这些权重来排序的。

向一个有序的集合添加数据
通过ZADD命令,我们可以向有序集合中插入一个或多个成员,但是如果该成员已经存在的话,那么就会更新该成员所对应的分数,命令格式如下:

ZADD key score1 member1 [score2 member2…]
score为成员的分数
member为成员

127.0.0.1:6379[6]> zadd zs1 1 aa 2 bb 3 cc
(integer) 3

获取有序集合的成员数
ZCARD命令可以获得指定有序集合的成员变量个数,格式如下:

ZCARD key

127.0.0.1:6379[6]> zcard zs1
(integer) 3

计算有序集合中指定区间分数的成员数

ZCOUNT key min max
key为要查询的有序集合的索引
min为区间的最小值
max为区间的最大值

127.0.0.1:6379[6]> zcount zs1 1 2
(integer) 2

根据分数返回有序集合指定区间内的成员

ZRANGEBYSCORE key min max [WITHSCORES]
key表示查询的集合的索引
min表示score的最小值
max表示score的最小值
[WITHSCORES]是可选的,表示是否带上对应的score

127.0.0.1:6379[6]> zrangebyscore zs1 1 3
1) "aa"
2) "bb"
3) "cc"
127.0.0.1:6379[6]> zrangebyscore zs1 1 3 withscores
1) "aa"
2) "1"
3) "bb"
4) "2"
5) "cc"
6) "3"

移除有序集合中的一个或多个元素
如果想要移除有序集合中的一个或多个元素,我们可以使用ZREM命令,格式如下:

ZREM key member1 [member2…]
key为要移除成员的集合的索引
member为要移除的成员变量,可以存在多个,但是中间要以空格分隔

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

七天玩转Redis 的相关文章

  • connect-redis - 如何保护会话对象免受竞争条件影响

    我使用 nodejs 和 connect redis 来存储会话数据 我将用户数据保存在会话中 并在会话生命周期中使用它 我注意到两个更改会话数据的请求之间可能存在竞争条件 我尝试过使用 redis lock 来锁定会话 但这对我来说有点问
  • 如何在多个Lua State(多线程)之间传递数据?

    我在中启动Redis连接池redis lua 通过从 C 调用 我得到了redis lua state 此 Lua 状态全局启动一次 仅在其他线程中启动get从中 当有一个 HTTP 请求 工作线程 时 我需要从redis lua stat
  • 如何设置 Celery 以通过 ssl 与 Azure Redis 实例对话

    使用 的伟大答案 如何在microsoft azure上的django项目中配置celery redis https stackoverflow com questions 39616701 how to configure celery
  • 库存管理系统的 SQL 与 NoSQL

    我正在开发一个基于 JAVA 的网络应用程序 主要目的是拥有在多个称为渠道的网站上销售的产品的库存 我们将担任所有这些渠道的管理者 我们需要的是 用于管理每个渠道的库存更新的队列 库存表 其中包含每个通道上分配的正确快照 将会话 ID 和其
  • Redis hash写入速度非常慢

    我面临一个非常奇怪的问题 使用 Redis 时 我的写入速度非常糟糕 在理想的情况下 写入速度应该接近 RAM 上的写入速度 这是我的基准 package redisbenchmark import redis clients jedis
  • Spring Data Redis - Lettuce连接池设置

    尝试在 spring data redis 环境中设置 Lettuce 连接池 下面是代码 Bean LettuceConnectionFactory redisConnectionFactory GenericObjectPoolConf
  • Spring Data Redis JedisConnectionException:流意外结束

    雷迪斯3 0 5Spring数据Redis 1 3 6绝地武士2 6 3 我们的 Web 应用程序通过 pub sub 从 Redis 接收数据 还以键 值对的形式在 Redis 上执行数据读 写 读 写发生在监听线程 独立监控线程和htt
  • 如何批量删除Redis中数十万个带有特殊字符的key

    我们有一个包含数十万个 Redis 键的列表 其中包含各种特殊字符 我们希望批量删除它们 对于这个问题上的类似问题 有一些很好的答案 如何使用 Redis 自动删除与模式匹配的键 https stackoverflow com questi
  • 无法启动redis.service:单元redis-server.service被屏蔽

    我在 ubuntu 16 04 上安装了 Redis 服务器 但是当我尝试使用启动redis服务时 sudo systemctl start redis 我收到消息 Failed to start redis service Unit re
  • Redis SYNC 套接字上的错误情况:连接被拒绝

    在我的 django 应用程序中使用 celery 和 redis 一切都工作正常 直到我遇到了问题 redis 文件的位置已更改 redis 无法访问它们 经过查找 原来这是由于网络随机攻击造成的 需要添加confg 我添加文件后 一段时
  • 如何在Redis中进行持久化存储?

    关闭redis服务器后 使用set存储的值被破坏 在这里我找到了使用持久性存储的方法 有人帮助我 如何使用javascript实现这一点 我想将客户端的一些值存储在 redis 数据库中 并且必须在其他客户端中使用该值 您需要配置 Redi
  • Redis发布/订阅:查看当前订阅了哪些频道

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

    我收到弃用警告 即 Redis hmset 已弃用 请改用 Redis hset 但是 hset 采用第三个参数 我不知道是什么name应该是 info users 10 timestamp datetime utcnow strftime
  • Spring Data JPA Redis:无法编写基于自定义方法的查询

    我已经使用 Redis 配置了 Spring Data JPA 并使用RedisRepositorieswith 提供了类似的方法find findAll 所有这些方法似乎都工作得很好 但我无法编写我的自定义方法 RedisEntity f
  • 有没有办法让特定的key在集群模式下定位到特定的redis实例上?

    我想让我的多锁位于不同的redis实例上 我发现redission可以指定一个实例来执行命令 但是如果该命令与key相关 则指定的实例会将命令传输到另一个实例 你能给我一些建议吗 你可以 但这并不是微不足道的 首先 Redis 在键中使用大
  • Laravel 异常队列最大尝试次数超出

    我创建了一个应用程序来向多个用户发送电子邮件 但在处理大量收件人时遇到问题 该错误出现在failed jobs table Illuminate Queue MaxAttemptsExceededException App Jobs ESe
  • 在 Spring 4 中干掉通用的 RedisTemplate

    我读到你可以拥有 Autowired从 Spring 4 开始泛型 这太棒了 我有一个摘要RedisService我想参加的课程 Autowired一个通用的 RestTemplate 如下所示 public abstract class
  • docker-compose:容器之间的 Redis 连接被拒绝

    我正在尝试设置一个 docker compose 文件 该文件旨在替换运行多个进程 RQ 工作线程 RQ 仪表板和 Flask 应用程序 的单个 Docker 容器解决方案导师 http supervisord org 主机系统是 Debi
  • 如何使用redis发布/订阅

    目前我正在使用node js和redis来构建应用程序 我使用redis的原因是因为发布 订阅功能 该应用程序只是在用户进入用户或离开房间时通知经理 function publishMsg channel mssage redisClien
  • 超出 Redis 连接/缓冲区大小限制

    在对我们的应用程序服务器进行压力测试时 我们从 Redis 中得到以下异常 ServiceStack Redis RedisException 无法连接到 redis host 6379 处的 redis 实例 gt System Net

随机推荐

  • 多输入多输出

    文章目录 效果一览 文章概述 部分源码 参考资料 效果一览 文章概述 多输入多输出 Matlab基于长短期记忆网络LSTM的多输入多输出预测 长短期记忆网络LSTM的数据回归预测 评价指标包括 MAE MBE和R2等 代码质量极高 方便学习
  • JAVA好用的免费开发工具

    注 本文章软件皆为免费的开源软件 1 IDEA 社区版 下载地址 Download IntelliJ IDEA The Capable Ergonomic Java IDE by JetBrains 2 数据库管理工具 DBeaver 链接
  • WTM asp.net core应用程序在Ubuntu上和CentOS上部署

    wtm在Ubuntu上和CentOS上部署 项目发布 在Visual Studio中右击Web项目 选择发布 如下图 Ubuntu安装 net core运行时 Ubuntu我是用的Vmware虚拟机 版本是18 04 参考官方文档 如果要开
  • Centos环境下离线安装postgreSQL简易版

    一 安装背景 因为服务器是部署在内网环境的 所以在无法连接外网的环境下 安装一些软件就会显得比较麻烦 所以特地尝试了一下离线安装 话不多说 开始 二 下载数据库资源文件 进入postgreSQL官网 选择需要安装的pgsql版本等 这里以9
  • 【云原生之Docker实战】使用docker部署kodbox私有云

    云原生之Docker实战 使用docker部署kodbox私有云 一 kodbox介绍 1 kodbox简介 2 kodbox功能与特点 二 检查本地docker状态 1 检查docker版本 2 检查docker状态 三 安装kodbox
  • 2018数学建模A题的简单指导

    之前写过一篇博客 介绍如何使用差分格式求解热传导方程 今天打开博客 突然发现评论区被这篇文章霸屏了 询问实验室的小伙伴才知 原来是被可爱的建模学子们攻占了 经过简单的了解 发现今年建模的A题的核心就是求解一个热传导方程 因此之前所写文章的程
  • ARM处理器寻址方式

    往期推荐 ARM指令集 ARM汇编语言程序结构 Android与ARM处理器 反射调用Java层方法 寻址的概述 寻址是指寻找寄存器里存放的数据或者是地址里存放的数据并加以使用 寻址有以下八种方式 1 立即寻址 2 寄存器寻址 3 寄存器移
  • 生产者消费者异步调用

    场景 全量同步上游酒店数据 需要同步酒店数据量近百万 上游接口一家酒店需要调用2次接口才能获取完整的酒店数据 并且一次只能查询一家酒店 本地需要更新的表有9张表 7张百万级别 2张千万级别 如果一个一个酒店查询 然后更新就需要更新 近千万次
  • CSS的学习

    CSS 1 CSS 如何生效 内部样式表 内联样式 外部样式表 级联的优先级 2 颜色 尺寸 对齐 尺寸 对齐 颜色 3 盒子模型 4 边框与边距 5 定位 6 浮动 7 不透明度 8 溢出 9 组合选择器 后代选择器 子选择器 10 伪类
  • Docker 配置国内源加速(2023/05/14)

    Docker 配置国内源加速 2023 05 14 文章目录 Docker 配置国内源加速 2023 05 14 1 修改配置文件 2 重启 Docker 服务 3 查看是否成功 Docker 在拉取镜像时使用默认源速度会比较慢 因此需要配
  • 12款高质量的免费 HTML 网站模板下载

    这篇文章收集了12款高质量的免费HTML网页模板分享给大家 您可以免费下载使用 相信这些漂亮的HTML网页模板既能够帮助您节省大量的时间和精力 又能有很满意的效果 希望这些精美的免费HTML网页模板能帮助到您 Magicbox 演示 下载
  • 华为手机连电脑当摄像头用_怎么用华为手机当电脑摄像头?

    展开全部 1 首先 需要从网站上下载相应的软件 大家可以从百度里面搜索 魅色软件 然后将电脑PC版本和安卓手机版本的软件全部下载 并在电脑上和安卓手机上都安装上这个软件 2 然后打开并运行电脑上的魅色软件 然后与此同时运行安卓手机上的魅色软
  • 多方安全计算简介

    1 多方安全计算背景 多方安全计算的研究主要是针对无可信第三方的情况下 如何安全地计算一个约定函数的问题 多方安全计算是电子选举 门限签名以及电子拍卖等诸多应用得以实施的密码学基础 一个多方安全计算协议 如果对于拥有无限计算能力攻击者而言是
  • redis(error) NOAUTH Authentication required.

    报错原因 没有用密码登陆认证 解决 输入密码即可解决 auth 密码
  • 点云最小外包矩形计算

    1 原理介绍 一簇点云的最小外包矩形 Minimum Bounding Rectangle MBR 是指用一个矩形将该簇点云框起来 所有点云数据在矩形框内 如下图所示为一个矩形框刚好将点云数据全部包围 下面给出一种基于最大重叠度的最小外包矩
  • 录音转文字软件哪个好?这几款分享给你

    嗨朋友们 你是否曾经为了整理会议记录或是处理采访录音而烦恼不已 那些长篇大论的文字内容得一个个敲键盘实在是太耗时了 今天我要给你介绍一些超方便的录音转文字软件 它不仅简化了记录和整理的过程 还提供了更高效的工作方式 能够让你跟繁琐的打字工作
  • Qt 6.2 中 QML 工具有哪些新功能?

    QML 工具是发展最快的领域之一 自 Qt 5 15 以来添加了大量新功能 在这里 我们将展示静态分析和格式化 QML 领域的进展和未来计划 Qt开发主流库 Qtitan组件集 QtitanRibbon 下载试用 遵循Microsoft R
  • IOC源码刨析

    前言 Spring框架两大核心 IOC和AOP IOC 控制反转 把对象的创建 属性设置 初始化 销毁等工作交给Spirng的IOC容器去管理 解放程序员的劳动力 对象被注册到Spring的IOC容器中 使用的时候从容器中获取即可 非常方便
  • Hadoop生态圈集群部署(完整版)

    软件 版本 Mysql 5 7 Java 1 8 0 241 Hadoop 3 3 0 Zookeeper 3 4 6 Hive 3 1 2 Flink 1 14 5 Hudi 0 11 1 Doris 1 1 0 Dinky 0 6 6
  • 七天玩转Redis

    1 string类型 设定指定的key值 语法格式 set key value key为键 value为值 127 0 0 1 6379 6 gt set k1 v1 OK 获取指定key的值 get key 127 0 0 1 6379