Redis 数据类型string(字符串)

ops/2024/11/15 1:23:26/

目录

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.ppmy.cn/ops/125980.html

相关文章

android stadio

build 时 pom文件无法下载解决 Android Studio Gradle build 报错:Received status code 400 from server: Bad Request - qq874455953 - 博客园

10年后手机有多科幻?清华孙茂松:人手一个超级大脑,诊病翻译搞研发

人工智能对我们的生活影响有多大? 看到这个问题,肯定会有人觉得很奇怪。 人工智能什么时候改变我们的生活了?我的贾维斯呢?我的科塔娜呢?我甚至都没要你把哆啦A梦做出来。 虽然像科幻小说和电影里那种栩栩如生到能够通过图灵测试的强人工智能确实还只存在于纸面上,但是…

初始Python篇(3)—— 列表

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: Python 目录 列表相关概念 列表的创建与删除 列表的遍历 操作列表的相关方法 列表的排序 列表生成式 二维列表 创建二维列表 遍…

文字识别解决方案-OCR识别应用场景解析

光学字符识别(Optical Character Recognition, OCR)技术是一种将图像中的文字转换为可编辑和可搜索的数据的技术。随着人工智能和机器学习的发展,OCR技术的应用场景越来越广泛,为文字录入场景带来了革命性的变革,下面以…

Ubuntu22.04中安装英伟达驱动并部署Pytorch深度学习环境

安装英伟达驱动 本文基于windows10ubuntu22.04双系统,给ubuntu22.04安装英伟达驱动。 安装必要。依赖 sudo apt update # 获取最新的软件包信息 sudo apt upgrade # 升级软件包 sudo apt install g sudo apt install gcc sudo apt install make禁用ubuntu默认驱动…

【LeetCode算法笔记】Day1:动态规划基础

目录 动态规划简介动态规划的定义动态规划的核心思想动态规划的简单例子 动态规划特征最优子结构性质重复子问题性质无后效应 动态规划的基本思路 动态规划简介 动态规划的定义 简称DP,是一种求解多阶段决策过程最优化问题的方法。在动态规划中,通过把原问题分解为…

小帅和小美有容-UMLChina建模知识竞赛第5赛季第16轮

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 参考潘加宇在《软件方法》和UMLChina公众号文章中发表的内容作答。在本文下留言回答。 只要最先答对前3题,即可获得本轮优胜。 如果有第4题,第4题为附加题&am…

问:JVM当中的垃圾分类怎么搞?

在Java中,JVM(Java虚拟机)的垃圾识别与分类是自动内存管理的重要组成部分。这一过程主要通过垃圾收集器(Garbage Collector)实现,旨在识别和回收不再被程序引用的对象,以释放内存空间。 1. 垃圾…