当前位置: 首页 > news >正文

5.string类型

Redis中的字符串,直接就是按照2进制方式存储的(无任何编码转换)-> 2进制存储,那么不仅可以存储文本数据,还可以是整数、JSON、xml、2进制(图片、音频、视频...)->还是需要注意Redis是单线程模型,value长度不宜过长

1. 基础命令

1.1 set、setnx、setex、setpx

SET key value [expiration EX seconds | PX milliseconds] [NX | XX]

setnx:如果key不存在才设置;存在返回nil

setex:设置key,并设置过期时间,秒为单位

setpx:设置key,并设置过期时间,毫秒为单位

注意:set带了XX选项,key存在情况,修改了value;value类型可以改变且ttl时间会失效;

flashall 清除所有的key(慎重!)

1.2 get、mset、mget

对于get来说,只支持string类型;其他类型报错;

mset、mget一次获取设置/查询多个key;

目的:减少网络IO次数,提高效率,节省资源;同样地,一次操作数不宜过多,Redis是单线程模型,避免阻塞;

1.3 针对int编码格式命令

incr:++操作

incrby:+n操作(n可以是负数)

decr:--操作

decrby:-n操作

incrbyfloat:+-浮点数

incr key:给key++;返回值:key+1后的值

细节:如果key不存在,value当0处理,返回1;其余同理

incrbyfloat:把key对应value加上一个浮点数;可以使用负数形式实现减法

1.4 常规字符串操作

1)APPEND key value(类似于string::append)

append返回值是长度,单位是字节;
redis不会做编码处理,在xshell终端操作,终端编码是utf8,汉字占3字节;

默认取出来的时候,也是按字节进行解析的;为了方便查看,启动mysql-cli时加上--raw选项就可以把2进制尝试翻译(xshell技巧:ctrl+s冻结画面,ctrl+q解除画面)

2)GETRANGE key start end(类似于substr)

start 和 end 是左闭右闭区间;

redis下标可以支持负数,倒数第一个为-1,以此类推;

注意:汉字截取时不能按单个字符截取,可能得不到想要的结果;

3)SETRANGE key offset value

返回值:替换后字符串的长度

offset表示偏移量,从哪个字符开始替换;

特别地:如果是setrange key 1 abc,key不存在情况;前面字节全部会默认初始化为0;

4)strlen key

返回值:key对应value长度,字节数

2. string内部的编码方式

1)int 64位/8字节的整数

2)embstr 压缩字符串

3)raw 常规字符串

对于int编码小数操作:

3.string类型应用场景

redis作为缓存,存储热点数据;查询数据,优先查询redis,若redis没有则查询数据库,然后同步一份给redis,返回;

上述策略弊端:redis数据就越写越多了,但是容量是有上限的;解决:1)写入redis时,设置过期时间 2)redis自身的内存淘汰策略

企业为什么乐意收集用户的数据?为了更好提供服务,优化和改进。

3.1 计数功能

3.2 共享会话(Session)

cookie(浏览器存储数据,sessionId),session(服务器存储用户状态信息)

在分布式场景下,每个服务器都能为用户提供服务,因此用户数据是要能够共享的;

3.3 手机验证码

http://www.cnnetsun.cn/news/174725.html

相关文章:

  • LLMs之Survey之Agent:《Measuring Agents in Production》翻译与解读
  • 零代码上手Google Gemini 3:5种实用方法大揭秘
  • “你用的那个AI,到底把你坑了还是救了?”——解锁宏智树论文的协作新范式
  • 好写作AI:别等学校采购了!你的论文“救命神器”自己就能用上
  • Windows系统文件GdiPlus.dll丢失或损坏 下载修复方法
  • 研究生必备8款AI写论文神器:5分钟生成25000字问卷类论文,自动生成高信度数据
  • 【BuildFlow 筑流】unitrix_macros库 Cargo.toml 配置详解及依赖库用法
  • 《开发者出海必看:如何优雅地搞定海外服务支付?(保姆级干货)》
  • Thinkphp和Laravel企业防爆安全设备信息系统
  • Thinkphp和Laravel全家桶鲜花售卖商城系统vue
  • 记录我适配iOS26遇到的一些问题
  • 通过命令模拟pod创建
  • 同步机无感 STM32 低成本 MD500E 永磁同步控制方案大揭秘
  • 小宝玩具 【通达信、源码 、主图、附图】
  • 使用 Github Pages 和 Hexo
  • 审稿 一区期刊注意事项: journal offers the option to connec;please note, reviewers are not expected 是什么意思
  • 线性代数:多维世界的变形工具箱
  • 力扣题目142. 环形链表 II​的解法分享,附图解
  • MATLAB电力系统继电保护之自动重合闸
  • 10 个AI写作工具,助你轻松搞定继续教育论文!
  • 【开题答辩全过程】以 基于Vue的茶道知识科普网站的设计与实现为例,包含答辩的问题和答案
  • 主动配电网两阶段鲁棒恢复:Matlab 代码探索之旅
  • ICG-20660L加速度+陀螺仪六轴IMU传感器原理图设计,已量产(加速度传感器)
  • 百度AI架构师亲授:Agentic智能体在医疗领域的落地(附诊断案例)
  • 软件工程期末高频易错点深度剖析:避开这些坑,你就赢了!
  • 打破 AI 创作枷锁!虎贲等考 AI 双效赋能,让学术原创不设限
  • AI 赋能学术演示!虎贲等考 AI PPT,让科研汇报告别 “无效努力”
  • 听完这场AI产品大会,我觉得如果不赚钱,所谓的提效真的毫无意义。
  • PWN手的成长之路-19-int_overflow
  • Thinkphp和Laravel党员素质能力提升管理系统vue