【Redis】数据类型——字符串string

本文介绍了 Redis 中 String 类型的基本操作指令,如 set、get、incr 和 ttl 等,并详细解析了 Redis 底层使用的 SDS 结构及其与 C 语言字符串的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、操作

1.启动redis服务器

 ./redis-server redis.conf

2.启动Redis的客户端

 ./redis-cli -p 6379

在这里插入图片描述
3.get、set操作:设置值和获取值
格式: set key value get key

set key1 v1

在这里插入图片描述

get key1 

在这里插入图片描述
4.exists:判断key是否存在
格式: exists key

 EXISTS key1

在这里插入图片描述
5.append:追加字符串,如果key不存在,相当于set命令
格式: append key value

  APPEND key1 hello

在这里插入图片描述

6.strlen:获取字符串的长度
格式: strlen key

  STRLEN key1

在这里插入图片描述
7.incr、decr操作:对value进行自增1和自减1操作
格式: incr key decr key

INCR view

在这里插入图片描述

DECR view

在这里插入图片描述
8.incrby decrby:设置加减的步长
格式: incrby key num decrby key num

incrby view 10

在这里插入图片描述

decrby view 5

在这里插入图片描述
9.getrange:获取给定范围的字符串值
格式: getrange key start stop

getrange k1 0 3

在这里插入图片描述

getrange k1 0 -1//截取全部

在这里插入图片描述
10.setrange:从指定位置开始替换字符串的值
格式: setrange key offset value

setrange k1 2

在这里插入图片描述
11.setex 、ttl操作:设置过期时间,查看剩余时间
格式: setex key seconds value

setex k2 30 v2
ttl k2

在这里插入图片描述
12.setnx:如果key不存在则设置,否则失败
格式: setnx key value

setnx k3 redis
setnx k3 111

在这里插入图片描述
13.mset mget:同时设置或者获取多个值
格式: mset key1 value1 key2 value2

mset k1 v1 k2 v2 k3 v3

在这里插入图片描述

mget k1 k2 k3

在这里插入图片描述
14.getset:先获取值,在设置值
格式: getset key value

getset k1 aaa

在这里插入图片描述
15.小结
String类似的使用场景:value除了是字符串也可以是数字!
(1)计数器
(2)统计多单位的数量
(3)对象缓存存储

二、底层原理

对于Redis的字符串,不是 C 语言中的字符串(即以空字符’\0’结尾的字符数组),它是自定义的数据结构SDS(simple dynamic string),并将 SDS 作为 Redis的默认字符串表示。
1.定义

struct sdshdr
{
     //记录buf数组中已使用字节的数量
     //等于 SDS 保存字符串的长度
     int len;
     //记录 buf 数组中未使用字节的数量
     int free;
     //字节数组,用于保存字符串
     char buf[];
}

2.C语言字符串与SDS的区别

C语言字符串SDS
获取字符串长度的时间复杂度为O(n)获取字符串长度的时间复杂度为O(1)
API是不安全的,可能造成缓冲区溢出API安全,不会造成缓冲区溢出
修改字符串长度n次必然需要执行n次内存重新分配修改字符串长度n次最多需要执行n次内存重新分配
只能保存文本数据可以保存文本数据和二进制数据
可以使用全部<string.h>中的库函数可以使用部分<string.h>中的库函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值