前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >🍬 Redis字符串String 数据类型详解

🍬 Redis字符串String 数据类型详解

原创
作者头像
爱吃糖的范同学
修改2023-02-26 17:32:33
4130
修改2023-02-26 17:32:33
举报
  • String是Redis最基本的数据类型,一个Key对应一个Value,一个Redis中字符串Value最多可以是512M
  • String类型是二进制安全的,意味着Redis的String可以包含任何数据。比如照片或者序列化对象。

📌 操作命令:

mset key value [key value ...]:设置多个键值(批处理)

msetnx key value [key value ...]:设置多个新的键值(如果已经有键存在,则这个指令执行不成功,无法新增键值)。

get <key>:查询对应键值

mget key [key ...]:获取多个键值对

getset key newValue将给定的key设置为newValue,并返回修改之前的value值。

setrange key 偏移量 value设置(替换)字符子串

getrange 开始下标 结束下标获取字符串从开始索引到结束索引位置的字符

索引从0开始!

incr <key>将key中存储的数字值增1,只能对数字值操作,如果为空,新增值为1

decr <key>将key中存储的数字值减1,只能对数字值操作,如果为空,新增值为-1

只有value是数值的情况下才能增减!

incrby key 步长指定步长增加对应key的value值

decrby key 步长指定步长减少对应key的value值

strlen <key>获得字符串值的长度

append <key><value>将给定的<value>追加到原值末尾

🔥 分布式锁:

setnx key value如果当前键不存在就设置键值对,否则执行不成功

setex key 过期时间 value设置键值对,并指定过期时间

🔥 原子操作:

原子操作指不会被线程调度机制打断的操作。这种操作一旦开始,就一直运行到结束,中间不会有任何context switch(切换到另一个线程)。如果其中一步失败,那么整个操作就是失败。

  • 在单线程中,能够在单条指令中完成操作都可以认为是“原子操作”,因为中断只能发生于指令之间。
  • 在多线程中,不能被其它进程(线程)打断的操作就叫做原子操作。

📌 数据结构:

String类型的redisObject内部对应了三种物理编码方式:int、embstr、raw

  • int:保存的是long型(长整型)的64位(8个字节)有符号整数。只有整数才会使用int,如果是浮点数,Redis内部会先将浮点数转换为字符串,然后保存字符串值。

long类型:

  • long数据类型是64位,有符号的二进制补码表示的整数。
  • 默认值0L
  • embstr:代表的是embstr格式的简单的动态字符串(Simple Dynamic String,SDS),是可以修改的字符串,内部结构实现上类似于Java的ArrayList采用分配冗余空间的方式来减少内存的频繁分配。保存长度小于44字节的字符串。
  • raw:保存长度大于44字节的字符串

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档