Redis 数据类型string(字符串)

目录

1 基本特性

2 主要操作命令

2.1 设置键值

2.1.1 SET key value [EX seconds] [PX milliseconds] [NX|XX]

2.1.2  MSET key value [key value ...]

2.1.3  SETEX key seconds value

2.1.4  PSETEX key milliseconds value

2.1.5  APPEND key value

2.2 获取键值 

2.2.1 GET key

2.2.2  MGET key [key ...]

2.2.3  GETRANGE key start end

2.2.4  STRLEN key

2.3 更新操作 

2.3.1 INCR key

2.3.2  DECR key

2.3.3  INCRBY key increment

2.3.4  DECRBY key decrement

2.3.5  INCRBYFLOAT key increment

2.4 位操作 

2.4.1 SETBIT key offset value

2.4.2  GETBIT key offset

2.4.3  BITCOUNT key [start] [end]

2.4.4  BITOP operation destkey key [key ...]

2.5 其他

2.5.1 SETNX key value

2.5.2  GETSET key value

2.5.3  GETDEL key


1 基本特性

  • 最大长度:在 Redis 5.0 及之后的版本中,单个字符串的最大长度是 512MB。
  • 内存优化:对于小的整数和短字符串,Redis 使用内部缓存来减少内存占用。
  • 编码方式:根据存储内容的不同,Redis 会自动选择合适的编码方式,比如 int、embstr 或 raw。

2 主要操作命令

2.1 设置键值
2.1.1 SET key value [EX seconds] [PX milliseconds] [NX|XX]

设置键的值。可选参数可以用来设置过期时间或仅在特定条件下设置。

127.0.0.1:6379> set name java
OK
2.1.2  MSET key value [key value ...]

同时设置多个键值对。

127.0.0.1:6379> mset name java1 name1 java2
OK
127.0.0.1:6379> get name
"java1"
127.0.0.1:6379> get name1
"java2"
2.1.3  SETEX key seconds value

设置键值的同时设置过期时间(以秒为单位)。例子设置过期时间为5秒。

127.0.0.1:6379> setex name 5 jdk
OK
127.0.0.1:6379> get name
"jdk"
127.0.0.1:6379> get name
(nil)
2.1.4  PSETEX key milliseconds value

设置键值的同时设置过期时间(以毫秒为单位)。例子设置过期时间为3000毫秒。

127.0.0.1:6379> psetex name 3000 jdk
OK
127.0.0.1:6379> get name
"jdk"
127.0.0.1:6379> get name
(nil)
2.1.5  APPEND key value

如果键已经存在,则将值追加到现有值后面;如果不存在,则创建新的键值对。

127.0.0.1:6379> set name jdk
OK
127.0.0.1:6379> get name
"jdk"
127.0.0.1:6379> append name 1.8
(integer) 6
127.0.0.1:6379> get name
"jdk1.8"
2.2 获取键值 
2.2.1 GET key

获取指定键的值。

127.0.0.1:6379> get name
"jdk1.8"
2.2.2  MGET key [key ...]

同时获取多个键的值。

127.0.0.1:6379> mget name name1
1) "jdk1.8"
2) "java2"
2.2.3  GETRANGE key start end

获取字符串的一部分。

127.0.0.1:6379> get name
"jdk1.8"
127.0.0.1:6379> getrange name 0 3
"jdk1"
2.2.4  STRLEN key

返回字符串的长度。

127.0.0.1:6379> get name
"jdk1.8"
127.0.0.1:6379> strlen name
(integer) 6
2.3 更新操作 
2.3.1 INCR key

将键的值增加1,如果键不存在则初始化为0。

127.0.0.1:6379> set number 3
OK
127.0.0.1:6379> incr number
(integer) 4
127.0.0.1:6379> get number
"4"
2.3.2  DECR key

将键的值减少1,如果键不存在则初始化为0。

127.0.0.1:6379> get number
"4"
127.0.0.1:6379> decr number
(integer) 3
127.0.0.1:6379> get number
"3"
2.3.3  INCRBY key increment

将键的值增加指定的整数。

127.0.0.1:6379> get number
"3"
127.0.0.1:6379> incrby number 5
(integer) 8
127.0.0.1:6379> get number
"8"
2.3.4  DECRBY key decrement

将键的值减少指定的整数。

127.0.0.1:6379> get number
"8"
127.0.0.1:6379> decrby number 2
(integer) 6
127.0.0.1:6379> get number
"6"
2.3.5  INCRBYFLOAT key increment

将键的值增加指定的浮点数。

127.0.0.1:6379> get number
"6"
127.0.0.1:6379> incrbyfloat number 0.5
"6.5"
127.0.0.1:6379> get number
"6.5"
2.4 位操作 
2.4.1 SETBIT key offset value

设置或清除指定位置的位。

127.0.0.1:6379> set name jdk
OK
127.0.0.1:6379> get name
"jdk"
# 将第 0 位设置为 1
127.0.0.1:6379> setbit name 0 1
(integer) 0
# 将第 3 位设置为 1
127.0.0.1:6379> setbit name 3 1
(integer) 0
127.0.0.1:6379> get name
"\xfadk"
2.4.2  GETBIT key offset

获取指定位置的位。

127.0.0.1:6379> getbit name 0
(integer) 1
2.4.3  BITCOUNT key [start] [end]

计算给定范围内设置为1的位的数量。

127.0.0.1:6379> bitcount name 0 1
(integer) 9
127.0.0.1:6379> bitcount name
(integer) 14
2.4.4  BITOP operation destkey key [key ...]

对一个或多个字符串进行位运算,并将结果保存在另一个键中。

# 设置一些示例键
127.0.0.1:6379> SET key1 "\x01\x02\x03"  # 二进制表示为 00000001 00000010 00000011
OK
127.0.0.1:6379> SET key2 "\x04\x05\x06"  # 二进制表示为 00000100 00000101 00000110# 执行 AND 操作
127.0.0.1:6379> BITOP AND result_key1 key1 key2
(integer) 3  # 结果长度为 3 字节
127.0.0.1:6379> GET result_key1
"\x00\x00\x02"  # 二进制表示为 00000000 00000000 00000010# 执行 OR 操作
127.0.0.1:6379> BITOP OR result_key2 key1 key2
(integer) 3  # 结果长度为 3 字节
127.0.0.1:6379> GET result_key2
"\x05\x07\x07"  # 二进制表示为 00000101 00000111 00000111# 执行 XOR 操作
127.0.0.1:6379> BITOP XOR result_key3 key1 key2
(integer) 3  # 结果长度为 3 字节
127.0.0.1:6379> GET result_key3
"\x05\x07\x05"  # 二进制表示为 00000101 00000111 00000101# 执行 NOT 操作
127.0.0.1:6379> BITOP NOT result_key4 key1
(integer) 3  # 结果长度为 3 字节
127.0.0.1:6379> GET result_key4
"\xff\xfd\xfc"  # 二进制表示为 11111111 11111101 11111100
2.5 其他
2.5.1 SETNX key value

只有当键不存在时才设置键的值。

127.0.0.1:6379> get name
"\xfadk"
127.0.0.1:6379> setnx name jdk
(integer) 0
127.0.0.1:6379> get name
"\xfadk"
2.5.2  GETSET key value

设置新值并返回旧值。

127.0.0.1:6379> get name
"\xfadk"
127.0.0.1:6379> getset name jdk
"\xfadk"
127.0.0.1:6379> get name
"jdk"
2.5.3  GETDEL key

获取键的值并删除该键(Redis 6.2+)。

更多命令请参考:Commands | Docs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/55761.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pikachu-Cross-Site Scripting-xss盲打

xss盲打,不是一种漏洞类型,而是一个攻击场景;在前端、或者在当前页面是看不到攻击结果;而是在后端、在别的页面才看到结果。 登陆后台,查看结果;

Extreme Compression of Large Language Models via Additive Quantization阅读

文章目录 Abstract1. Introduction2. Background & Related Work2.1. LLM量化2.2. 最近邻搜索的量化 3.AQLM:Additive Quantization for LLMs3.1. 概述3.1.0 补充**步骤说明****举例说明** 3.2. 阶段1:代码的波束搜索3.3. 阶段2:码本更新3.4. 阶段3&…

Qt Creator 通过python解释器调用*.py

全是看了大佬们的帖子,结合chatGPT才揉出来。在此做个记录。 安装python在Qt Creator *.pro 文件中配置好环境来个简单的example.py调用代码安装pip添加opencv等库调用包含了opencv库的py代码成功 *.pro配置: INCLUDEPATH C:\Users\xuanm\AppData\Lo…

wordpress在页面中调用另外一个页面的内容

在WordPress中,一个页面调用另一个页面的内容通常不是WordPress设计的直接功能,因为WordPress的页面和内容通常是独立管理的。不过,你可以通过几种方法来实现这一需求: 1. 使用WordPress的短代码(Shortcodes) 你可以创建一个自定…

操作系统中的并发控制——使用条件变量同步

本期主题: 操作系统中的并发控制,条件变量 往期链接: linux设备驱动中的并发操作系统中的多线程问题——原子操作、自旋锁的底层实现操作系统并发控制——使用互斥锁实现同步 操作系统并发控制之条件变量同步 1. 问题描述2. 条件变量的API讲…

Netty的线程模型

Netty的线程模型是其核心特性之一,主要包括以下几个方面: 线程模型概述 作用与重要性:线程模型决定了代码在操作系统、编程语言和框架中的执行方式,对于处理多线程相关的问题至关重要。在网络编程中,合理的线程模型可…

云栖实录 | Hologres3.0全新升级:一体化实时湖仓平台

本文根据2024云栖大会实录整理而成,演讲信息如下: 演讲人: 姜伟华 | 阿里云智能集团资深技术专家、Hologres 负责人 丁 烨 | 阿里云智能集团产品专家、Hologres 产品负责人 活动: 2024 云栖大会 - 商用大数据计算与分析平台论…

Python中的数据可视化:从入门到进阶

数据可视化是数据分析和科学计算中的重要环节,它通过图形化的方式呈现数据,使复杂的统计信息变得直观易懂。Python提供了多种强大的库来支持数据可视化,如Matplotlib、Seaborn、Plotly等。本文将从基础到进阶,详细介绍如何使用这些…

[单master节点k8s部署]31.ceph分布式存储(二)

Ceph配置 Ceph集群通常是一个独立的存储集群,可以部署在 Kubernetes 集群之外。Ceph 提供分布式存储服务,能够通过 RADOS、CephFS、RBD(块存储)、和 RGW(对象存储)等方式与 Kubernetes 集成。即使 Ceph 部…

逼近理论及应用精解【9】

文章目录 全卷积模型定义数学原理与公式架构典型结构应用优点挑战例题 ANNSENet(Squeeze-and-Excitation Networks)定义数学原理与公式计算定理架构例子例题 ResNet(残差网络)定义数学原理与公式计算定理算法过程架构例子例题 参考…

PostgreSQL学习笔记五:数据库基本操作

在 PostgreSQL 中,您可以执行一系列基础操作来管理数据库、备份和恢复数据。以下是一些常用的命令和步骤: 创建数据库 使用以下命令创建新数据库: CREATE DATABASE database_name;您也可以在创建时指定数据库所有者和其他参数:…

基于深度学习的手势控制模型

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有:中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等,曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝,拥有2篇国家级人工智能发明专利。 1. 项目简…

Nexpose 6.6.271 发布下载,新增功能概览

Nexpose 6.6.271 for Linux & Windows - 漏洞扫描 Rapid7 Vulnerability Management, release Sep 26, 2024 请访问原文链接:https://sysin.org/blog/nexpose-6/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.or…

安全工具 | 搭建带有 Web 仪表板的Interact.sh

介绍 Interactsh 是一个用于检测带外交互的开源工具。它是一种旨在检测导致外部交互的漏洞的工具。本文将主要介绍在子域上设置私有 Interact.sh 服务器以及部署其 Web 应用程序。只需一个 AWS EC2 或 VPS 实例和一个域。 要求 •具有静态IP的AWS EC2 / VPS •拥有自己的域…

实例讲解电动汽车VIN写入规则及Simulink建模方法(三)——VIN设置状态反馈及Simulink建模方法

目录 一、整车VIN设置状态反馈规则 二、整车VIN设置状态反馈设置策略 1、VIN设置状态判定 2、VIN设置状态反馈发送 三、整车VIN设置状态反馈Simulink建模 1、VIN设置状态判定 2、VIN设置状态反馈发送 3、整车VIN设置状态反馈设置完整Simulink模型 四、总结 一、整车VI…

python 实现最短路径广度优先搜索算法

最短路径广度优先搜索算法介绍 最短路径广度优先搜索(Breadth-First Search, BFS)算法通常不直接用于寻找加权图中的最短路径,因为它在搜索过程中不会考虑边的权重。然而,在无权图中(即所有边的权重都相等&#xff09…

Lua在Nginx中的开发实践

Lua在Nginx中的开发实践 引言 在现代Web开发中,性能和可扩展性是开发者关注的关键因素。Nginx因其轻量级、高并发处理能力而成为流行的Web服务器,而Lua则是一种高效的脚本语言,广泛应用于嵌入式系统和游戏开发。将Lua与Nginx结合&#xff0…

Node.js入门——fs、path模块、URL端口号、模块化导入导出、包、npm软件包管理器

Node.js入门 1.介绍 定义:跨平台的JS运行环境,使开发者可以搭建服务器端的JS应用程序作用:使用Node.Js编写服务器端代码Node.js是基于Chrome V8引擎进行封装,Node中没有BOM和DOM 2.fs模块-读写文件 定义:封装了与…

WIFI网速不够是不是光猫的“路由模式”和“桥接模式”配置错了?

光猫(光纤调制解调器)是一种用于将光纤信号转换为数字信号的设备,通常用于家庭或企业网络中。光猫可以在不同的工作模式下运行,其中最常见的两种模式是“路由模式”和“桥接模式”。以下是这两种模式的详细解释及其优缺点。 一、路…

python发邮件附件:配置SMTP服务器与认证?

python发邮件附件技巧?Python发送多附件邮件的方法? Python作为一种强大的编程语言,提供了丰富的库和工具来实现这一功能。AokSend将深入探讨如何使用Python发邮件附件,并详细介绍配置SMTP服务器与认证的关键步骤。 python发邮件…