Redis之String类型

2023-11-07

Redis之String类型

在这里插入图片描述
Redis命令不区分大小写

1. 赋值/获取值

赋值:set key value
取值:get key (当键不存在时候,会返回空结果)

127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> get k2
(nil)
127.0.0.1:6379> keys *
1) "k1"

2. 同时设置/获取多个键值

MSET/MGET

127.0.0.1:6379> keys *
1) "k1"
127.0.0.1:6379> mset k2 v2 k3 v3 k4 v4
OK
127.0.0.1:6379> mget k2 k3 k4
1) "v2"
2) "v3"
3) "v4"
127.0.0.1:6379> mget k1 k2
1) "v1"
2) "v2"
127.0.0.1:6379> mget k1 k2 k3 k4
1) "v1"
2) "v2"
3) "v3"
4) "v4"
127.0.0.1:6379> mget k2 k3 k4 k5
1) "v2"
2) "v3"
3) "v4"
4) (nil)

3. 数值增减

  • 递增数值:INCR key
  • 增加指定的整数:INCRBY key increment
  • 递减数值:DECR key
  • 减少指定的整数:DECRBY key decrement
127.0.0.1:6379> incr user:1:article:01
(integer) 1
127.0.0.1:6379> incr user:1:article:01
(integer) 2
127.0.0.1:6379> incr user:1:article:01
(integer) 3
127.0.0.1:6379> get user:1:article:01
"3"
127.0.0.1:6379> decr user:1:article:01
(integer) 2
127.0.0.1:6379> get user:1:article:01
"2"
127.0.0.1:6379> incrby user:1:article:01 20
(integer) 22
127.0.0.1:6379> get user:1:article:01
"22"
127.0.0.1:6379> decrby user:1:article:01 10
(integer) 12
127.0.0.1:6379> get user:1:article:01
"12"

4. 获取字符串长度

STRLEN key
不存在的key返回0

127.0.0.1:6379> get user:1:article:01
"12"
127.0.0.1:6379> strlen user:1:article:01
(integer) 2
127.0.0.1:6379> strlen k1
(integer) 2
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> get name
"zhangsan"
127.0.0.1:6379> strlen name
(integer) 8
127.0.0.1:6379> strlen hh
(integer) 0

5. 向尾部追加值

APPEND key value
当不存在key时,相当于新建了个key并把后面的值赋给这个key

127.0.0.1:6379> set say hello
OK
127.0.0.1:6379> get say
"hello"
127.0.0.1:6379> append say world
(integer) 10
127.0.0.1:6379> get say
"helloworld"
127.0.0.1:6379> append aaa hhh
(integer) 3
127.0.0.1:6379> get aaa
"hhh"

6. 分布式锁

set key value [EX seconds] [PX milliseconds] [NX|XX]

  • EX: key在多少秒之后过期
  • PX: key在多少毫秒之后过期
  • NX: 当key不存在的时候,才创建key, 效果等同于setnx
  • XX: 当key存在的时候,覆盖key
127.0.0.1:6379> set stock 10 ex 10
OK
127.0.0.1:6379> get stock
"10"
127.0.0.1:6379> ttl stock
(integer) 1
127.0.0.1:6379> get stock
(nil)
127.0.0.1:6379> get stock
(nil)
127.0.0.1:6379> set stock 10 ex 20 nx
OK
127.0.0.1:6379> get stock
"10"
127.0.0.1:6379> ttl stock
(integer) 12
127.0.0.1:6379> ttl stock
(integer) -2
127.0.0.1:6379> get stock
(nil)
127.0.0.1:6379> setnx k1 v1
(integer) 0
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> setnx k1 vv1
(integer) 0
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> setnx a1 vv1
(integer) 1
127.0.0.1:6379> get a1
"vv1"

7.应用场景

  • 商品编号,订单编号,项目编号使用INCR生成

商品编号,订单编号,项目编号等里面除了对应位数上符合业务逻辑的规则,还会多余出几位让自增产生,这个自增如果每次去查上次生成最大的编号,然后再取到再自增,性能会比较低,所以一般会把自增这几位放在redis中,使用INCR命令来实现,最后和别的符合业务规则的位拼接而成新的编号。XASDWEBX001,XASDWEBX002…

127.0.0.1:6379> incr num
(integer) 1
127.0.0.1:6379> get num
"1"
127.0.0.1:6379> incr num
(integer) 2
127.0.0.1:6379> get num
"2"
  • 公司内网发文的文章,统计被员工阅读次数

每个员工打开文章01时候就执行 incr article:01,然后显示阅读次数是执行get article:01

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

Redis之String类型 的相关文章

  • 仅当尚未设置时才进行原子设置

    仅当尚未在 Redis 中设置时 是否有办法执行原子设置 具体来说 我正在创建一个像 myapp user user email 这样的用户 并且希望 Redis 在 user email 已被占用时返回错误 而不是默默地替换旧值 比如声明
  • PooledRedisClientManager 未释放连接

    我将 json 数据列表存储在 redis 中并使用 ServiceStack c 客户端访问它 我本质上是在管理自己的外键 我在其中存储zrangeid 我使用应用程序内部的接口从zrange然后从 Redis 获取底层 json 对象并
  • Redis键空间事件不触发

    我有两个 Redis 客户端 在一个文件中我有一个简单的脚本设置并删除了 Redis 键 var redis require redis var client redis createClient 6379 127 0 0 1 client
  • 如何设置 Celery 以通过 ssl 与 Azure Redis 实例对话

    使用 的伟大答案 如何在microsoft azure上的django项目中配置celery redis https stackoverflow com questions 39616701 how to configure celery
  • WSL Redis 遇到系统尚未使用 systemd 作为 init 系统(PID 1)启动。无法操作[已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试遵循本文中讨论的 Redis 安装过程article https www digitalocean com community
  • 是否有可嵌入的 Java 替代 Redis?

    根据这个线程 https stackoverflow com questions 3047010 best redis library for java 如果我想从Java中使用Redis Jedis是最好的选择 然而 我想知道是否有任何库
  • Redis 排序集和解决关系

    我正在使用 Redis 排序集来存储我正在处理的项目的排名 我们没有预料到 我们想要如何处理关系 Redis 按字典顺序对具有相同分数的条目进行排序 但我们想要做的是对具有相同分数的所有条目给予相同的排名 例如在以下情况 redis 127
  • 从redis中检索大数据集

    一台服务器上的应用程序查询另一台服务器上运行的 Redis 查询的结果数据集约为 250kzrangebyscore objects locations inf inf这在应用程序服务器上似乎需要 40 秒 当使用命令执行时redis cl
  • Caffeine Expiry 中如何设置多个过期标准?

    我正在使用 Caffeine v2 8 5 我想创建一个具有可变到期时间的缓存 基于 值的创建 更新以及 该值的最后一次访问 读取 无论先发生什么都应该触发该条目的删除 缓存将成为三层值解析的一部分 The key is present i
  • 如何将node.js管道传输到redis?

    我有很多数据要插入 SET INCR 到redis DB 所以我正在寻找pipeline http redis io topics pipelining 质量插入 http redis io topics mass insert通过node
  • SignalR 无法连接到 SSL 上的 Azure Redis

    我目前在 Azure 上托管我的 redis 缓存服务器 并让 signalR 依赖它作为骨干 使用以下内容 GlobalHost DependencyResolver UseRedis 服务器 端口 密码 eventKey 这可以在端口
  • 为什么 Redis TimeSeries 不捕获聚合中的最后一个元素?

    我试图了解 Redis 的时间序列规则创建的工作原理 但我很困惑为什么 Redis 会忽略聚合中的最后一项 并想知道这是否是预期的行为 我在中创建了示例代码redis cli为了显示 127 0 0 1 6379 gt FLUSHALL O
  • StackExchange.Redis的正确使用方法

    这个想法是使用更少的连接和更好的性能 连接会随时过期吗 对于另一个问题 redis GetDatabase 打开新连接 private static ConnectionMultiplexer redis private static ID
  • Redis 队列工作程序在 utcparse 中崩溃

    我正在尝试按照以下教程获得基本的 rq 工作 https blog miguelgrinberg com post the flask mega tutorial part xxii background jobs https blog m
  • 如何使用 Redis 自动删除与模式匹配的键

    在我的 Redis DB 中 我有很多prefix
  • 在 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 连接/缓冲区大小限制

    在对我们的应用程序服务器进行压力测试时 我们从 Redis 中得到以下异常 ServiceStack Redis RedisException 无法连接到 redis host 6379 处的 redis 实例 gt System Net
  • 由于配置文件错误,无法启动 Redis 服务器

    我刚刚按照此处的说明安装了 Redis http redis io download http redis io download 当我运行 redis server redis conf 时出现以下错误 FATAL CONFIG FILE
  • 没有适用于机器人的 Laravel 会话

    我在大型 Laravel 项目和 Redis 存储方面遇到问题 我们将会话存储在 Redis 中 我们已经有 28GB 的 RAM 然而 它的运行速度仍然相对较快 达到了极限 因为我们有来自搜索引擎机器人的大量点击 每天超过 250 000

随机推荐

  • 【ROS】学习之日志(log)消息

    参考 ROS学习之日志消息 ROS中的日志 log 消息 ROS日志级别控制 ROS日志 log 系统 通过显示进程的运行状态是好的习惯 但需要确定这样做不会影响到软件的运行效率和输出的清晰度 ROS 日志 log 系统的功能是让程序生成一
  • 傻瓜式阿里云部署java web项目步骤

    写在前面 本傻瓜式步骤适用于阿里云服务器是Windows Server 2008操作系统 一 阿里云操作步骤 1 首先提前准备好阿里云账号和密码 访问地址 阿里云 2 登录后进入首页 点击云服务器ECS 如图 3 进入云服务器ECS 点击实
  • java比较器Comparable接口和Comaprator接口

    java的比较器有两类 分别是Comparable接口和Comparator接口 在为对象数组进行排序时 比较器的作用非常明显 首先来讲解Comparable接口 让需要进行排序的对象实现Comparable接口 重写其中的compareT
  • MySQL - 普通索引

    创建和查看索引 创建索引是指在某个表的一列或多列上建立一个索引 以便提高对表的访问速度 创建索引有3种方式 分别是创建表的时候创建索引 在已经存在的表上创建索引和使用ALTER TABLE语句来创建索引 本节将根据具体的索引分类详细的讲解这
  • (最简单)使用 reset-css 初始化浏览器css样式

    目录 背景 实现 步骤一 步骤二 背景 在我们的项目初始化搭建过程中会遇到这种情况 需要我们自己清除css默认样式 但是我们不可能一周都有那个清除默认css样式的文件 实现 步骤一 在终端使用 npm 引用 reset css npm i
  • mysql linux redhat_RedHat Linux 6 下 MySQL 8.0.11安装配置

    我这里是RHEL6 5的系统 因此选择RedHat 6 x86 64bit操作系统 下载第一个RPM Bundle即可 MySQL 8 0 11 1 el6 x86 64 rpm bundle tar 目前MySQL8 0 11社区版提供了
  • C++ system()函数的常用用法 (史上最详细)

    目录 一 推荐 1 system pause 2 system color 3 system title 4 system cls 二 文件操作 1 system start 2 system del 3 system copy A B 4
  • ReactDOM.render(...) 渲染方法

    React代码的书写格式和以前的JS有很大的不同 下面通过对这段代码进行分析了解一下他 以前使用Javascript定义一个变量用var ES6加入了const关键字 用来定义一个常量 const div document createEl
  • 【Kotlin】快速理解协程与挂起

    本文不介绍协程和挂起的基础用法 如需要请移步其他博客 本文主要讲解 kotlin中的协程是什么 协程的作用 挂起是什么 挂起的作用 本文全程尽量白话 使得协程和挂起理解起来更容易 小故事or小事故 之前面试的时候 有个面试官问了我一个问题
  • 语义分割任务中的Transformer

    文章目录 语义分割中的Transformer 1 Patch based Transformer 1 1 SETR 1 2 Segformer 2 Query Based Transformer 2 1 Transformer with O
  • vscode更新时报错怎么办?

    请用管理员权限 打开试试
  • vue2组件系列:Slider 滑块

    我所接触到的Slider滑块应用的场景 主要有图片的放大缩小 调节声音的大小 不知道小伙伴们的应用场景都有哪些呢 欢迎在文章下方留言讨论哈 准备工作 创建一个页面 Slider vue在router js里配置 Slider页面的路由 pa
  • js实现文字上下滚动(到底回到顶部重复滚动)

    直接贴代码 div class scroll ul li 开始 li li 用户 li ul div
  • mybatis传参1 - 传入map类型的参数

    本章将介绍mybatis如何传入参数 传入map类型的参数 我们需要定义如下三部分 目录 1 接口部分 2 mapper文件部分 3 测试类部分 4 测试本次结果 4 1跑出来的值 4 2mysql值 1 接口部分 定义一个接口返回User
  • 【轩说Java】JavaSE知识点难点汇总

    文章目录 JAVA SE 抽象类与其实现子类 抽象类与其子类如下 静态函数不存在重写和多态的概念 重写的要求 接口interface 类 接口的实现 一对多 接口 接口的继承 一对多 接口中的变量和函数 接口作为一种标签 堆 栈 静态方法区
  • Flask-SQLALchemy 连接数据库

    Flask SQLALchemy 连接数据库 在 Flask Web 框架中 Flask SQLALchemy 扩展对数据库操作进行了封装 使用 Flask SQLALchemy 可以通过 Python 对象来操作数据库 一 Flask S
  • Kubernetes集群配置免费的泛域名证书支持https

    前言 kubernetes 集群默认安装的证书是自签发证书 浏览器访问会发出安全提醒 本文记录了利用 dnspod cert manager let s encrytp 等开源组件 实现泛域名证书的自动生成 续期管理 为现有kubernet
  • [转]:Javascript+xmlhttp调用Webservice

    原文地址 http netboy cnblogs com archive 2006 02 18 333260 html 1 创建webservice 为了免于落俗我稍稍修改了创建webserice的默认webmethod using Sys
  • Python 30天: 第一天 -- 简介

    第二天 gt gt 第一天 欢迎观看python30天 介绍 Python 是一种用于通用编程的高级编程语言 它是一种开源 解释型 面向对象的编程语言 Python 是由荷兰程序员 Guido van Rossum 创建的 Python 编
  • Redis之String类型

    文章目录 Redis之String类型 1 赋值 获取值 2 同时设置 获取多个键值 3 数值增减 4 获取字符串长度 5 向尾部追加值 6 分布式锁 7 应用场景 Redis之String类型 Redis命令不区分大小写 1 赋值 获取值