Redis 数据类型string(字符串)

目录

[1 基本特性](#1 基本特性)

[2 主要操作命令](#2 主要操作命令)

[2.1 设置键值](#2.1 设置键值)

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

[2.1.2 MSET key value [key value ...]](#2.1.2 MSET key value [key value ...])

[2.1.3 SETEX key seconds value](#2.1.3 SETEX key seconds value)

[2.1.4 PSETEX key milliseconds value](#2.1.4 PSETEX key milliseconds value)

[2.1.5 APPEND key value](#2.1.5 APPEND key value)

[2.2 获取键值](#2.2 获取键值)

[2.2.1 GET key](#2.2.1 GET key)

[2.2.2 MGET key [key ...]](#2.2.2 MGET key [key ...])

[2.2.3 GETRANGE key start end](#2.2.3 GETRANGE key start end)

[2.2.4 STRLEN key](#2.2.4 STRLEN key)

[2.3 更新操作](#2.3 更新操作)

[2.3.1 INCR key](#2.3.1 INCR key)

[2.3.2 DECR key](#2.3.2 DECR key)

[2.3.3 INCRBY key increment](#2.3.3 INCRBY key increment)

[2.3.4 DECRBY key decrement](#2.3.4 DECRBY key decrement)

[2.3.5 INCRBYFLOAT key increment](#2.3.5 INCRBYFLOAT key increment)

[2.4 位操作](#2.4 位操作)

[2.4.1 SETBIT key offset value](#2.4.1 SETBIT key offset value)

[2.4.2 GETBIT key offset](#2.4.2 GETBIT key offset)

[2.4.3 BITCOUNT key [start] [end]](#2.4.3 BITCOUNT key [start] [end])

[2.4.4 BITOP operation destkey key [key ...]](#2.4.4 BITOP operation destkey key [key ...])

[2.5 其他](#2.5 其他)

[2.5.1 SETNX key value](#2.5.1 SETNX key value)

[2.5.2 GETSET key value](#2.5.2 GETSET key value)

[2.5.3 GETDEL key](#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

相关推荐
kura_tsuki40 分钟前
[Oracle数据库] Oracle 常用函数
数据库·oracle
YA3332 小时前
java基础(十)sql的mvcc
数据库
weixin_307779135 小时前
VS Code配置MinGW64编译SQLite3库
开发语言·数据库·c++·vscode·算法
SelectDB6 小时前
Apache Doris 4.0 AI 能力揭秘(一):AI 函数之 LLM 函数介绍
数据库·人工智能·数据分析
我是哈哈hh6 小时前
【MySQL】在UBuntu环境安装以及免密码登录入门
linux·数据库·mysql·ubuntu
喪彪7 小时前
MySQL新手教学
数据库·mysql·adb
柳贯一(逆流河版)8 小时前
Spring 三级缓存:破解循环依赖的底层密码
java·spring·缓存·bean的循环依赖
丘大梨9 小时前
QT 基础聊天应用项目文档
运维·数据库·系统架构
HMBBLOVEPDX10 小时前
MySQL的多版本并发控制(MVCC):
数据库·mysql·mvcc