Redis基本数据类型:String

String

一、String 类型概述

Redis 的 String 类型并不仅仅是简单的"字符串"。它实际上是 二进制安全 的,意味着它可以存储任何形式的二进制数据,而不仅仅是可打印的文本。这使得 String 类型可以用来存储:

  • 普通的文本字符串(例如:"hello world")
  • 数字(整数或浮点数,例如:100, 3.14)
  • 二进制数据(例如:一张图片的序列化内容或一个序列化的对象)

一个 String 类型的 value 最大可以存储 512MB 的数据。

二、基本方法

  1. 简单set get del
bash 复制代码
127.0.0.1:6379> set name xiaozhang   #设置key-value
OK
127.0.0.1:6379> get name  #获得value
"xiaozhang"
127.0.0.1:6379> get age   #获取失败
(nil)
127.0.0.1:6379> del name  #删除key
(integer) 1
127.0.0.1:6379> del age  #删除失败
(integer) 0
  1. 批量set get
bash 复制代码
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3  #批量写入
OK
127.0.0.1:6379> mget k1 k2 k3  #批量获取
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> mdel k1 k2  #没有mdel
(error) ERR unknown command 'mdel', with args beginning with: 'k1' 'k2' 
  1. 增与减
bash 复制代码
127.0.0.1:6379> set num 1
OK
127.0.0.1:6379> incr num  #自增
(integer) 2
127.0.0.1:6379> get num
"2"
127.0.0.1:6379> decr num  #自减
(integer) 1
127.0.0.1:6379> incrby num 10  #指定增加
(integer) 11
127.0.0.1:6379> decrby num 5  #指定减少
(integer) 6
  1. 特殊的get set: setex,setnx, getset
bash 复制代码
127.0.0.1:6379> setex test 5 ok  #设置key的过期时间
OK
127.0.0.1:6379> ttl test  #检查key多久之后会过期
(integer) 3
127.0.0.1:6379> ttl test
(integer) 1
127.0.0.1:6379> ttl test
(integer) -2              #key=-2说明已过期
127.0.0.1:6379> setnx test ok  #SET if Not eXists。只有在 key不存在时,才设置 key 的值。
(integer) 1
127.0.0.1:6379> setnx test no
(integer) 0
127.0.0.1:6379> get test
"ok"
127.0.0.1:6379> getset test no  #设置key的新值,并返回key的旧值
"ok"
127.0.0.1:6379> get test  
"no"
  1. 字符串操作
bash 复制代码
127.0.0.1:6379> set name xiao
OK
127.0.0.1:6379> strlen name  #获取value的长度
(integer) 4
127.0.0.1:6379> append name zhang  #如果key已经存在并且是一个字符串,则将value追加到原有值的末尾
(integer) 9
127.0.0.1:6379> get name
"xiaozhang"
127.0.0.1:6379> getrange name 0 -1  #获取范围字符串的子字符串,但是不会改变原来的字符串
"xiaozhang"
127.0.0.1:6379> getrange name 0 3
"xiao"
127.0.0.1:6379> get name 
"xiaozhang"

三、内部编码

Redis 会根据存储的 value 的不同,智能地采用不同的内部编码来节省内存和提高效率。对于 String 类型,主要有三种:

  1. int:当存储的值是 64 位有符号整数时,Redis 会直接使用整数存储。
  2. embstr:当存储的字符串长度较短(<= 44 字节)时,Redis 会使用一种优化的嵌入式字符串编码。
  3. raw:当存储的字符串长度较长(> 44 字节)或者是浮点数时,Redis 会使用标准的简单动态字符串(SDS)来存储。

你可以使用 OBJECT ENCODING key 命令来查看一个 key 的内部编码。

四、应用场景

String 类型的应用场景极其广泛:

  1. 缓存:最经典的用法。将数据库查询结果、页面内容、对象序列化后存储起来,加速访问。
  2. 计数器 :利用 INCR, DECR 命令实现网站访问量、视频播放量、点赞数等。原子性操作保证了高并发下的准确性。
  3. 分布式会话(Session) :结合 SETEX,将用户的 Session 信息存储在 Redis 中,实现多台应用服务器共享 Session。
  4. 分布式锁 :利用 SETNX 命令可以实现一个简单的分布式锁。
  5. 存储简单对象 :将对象序列化成 JSON 字符串后存储。例如:SET user:1001 '{"name":"Alice", "age":30}'
相关推荐
洲覆2 小时前
Redis 64字节分界线与跳表实现原理
数据结构·数据库·redis·缓存
code123133 小时前
redis升级方法
数据库·redis·缓存
gsfl3 小时前
redis常见数据结构及其编码方式
数据结构·redis
tpoog4 小时前
[C++项目框架库]redis的简单介绍和使用
开发语言·c++·redis
铜峰叠翠7 小时前
Redis安装配置
数据库·redis·缓存
余衫马18 小时前
Windows 10 环境下 Redis 编译与运行指南
redis·后端
观望过往1 天前
Spring Boot 集成 Redis 全方位详解
spring boot·redis
野犬寒鸦1 天前
今日面试之快问快答:Redis篇
java·数据库·redis·后端·缓存·面试·职场和发展
猿究院-陆昱泽1 天前
Redis 主从同步:原理、配置与实战优化
redis·后端·java-ee·intellij-idea