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

相关推荐
bug菌¹16 分钟前
滚雪球学Oracle[3.5讲]:Oracle特有的SQL功能
数据库·sql·oracle·特性·sql功能
沟沟里的农民18 分钟前
【PostgreSQL】PG数据库表“膨胀”粗浅学习
数据库·postgresql
goTsHgo1 小时前
MySQL 锁 简介
数据库·mysql
MXsoft6182 小时前
机房建设及运维方案重构:迎接信息技术新时代的挑战
数据库
Nervousr3 小时前
SQL自学:分组数据GROUP BY子句和HAVING子句
数据库·笔记·sql·mysql
好好学习的人3 小时前
SQL第13课挑战题
数据库·sql
知识分享小能手3 小时前
mysql学习教程,从入门到精通,SQL HAVING 子句(32)
大数据·开发语言·数据库·sql·学习·mysql·数据分析
快乐江小鱼3 小时前
深入浅出MongoDB(五)
数据库·mongodb
陈序缘3 小时前
Go语言实现长连接并发框架 - 请求分发器
linux·服务器·开发语言·数据库·后端·golang
傻啦嘿哟3 小时前
ORM框架简介
数据库·oracle