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 手机验证码
相关推荐
IT大白鼠4 天前
Redis 系列 · 第 01 篇——认知入门:Redis 是什么
redis·nosql
彧azz4 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
lbb 小魔仙4 天前
OpenClaw + cpolar 实战:远程 NAS、分享小游戏、RDP,再配置公网 AI 入口
数据库·人工智能·redis·oracle·prometheus
夕除4 天前
redis--018
redis
两锭子4 天前
Redis基础
redis
烟沙九洲4 天前
Redis 缓存穿透、缓存击穿、缓存雪崩
数据库·redis
字节探索4 天前
Redis 只会当缓存用?这 10 大实战场景,让你的系统快到飞起
redis·后端
于樱花森上飞舞4 天前
【Redis】哨兵详解
java·开发语言·数据库·redis
Rain的Java大神之路5 天前
如何快速上传10G文件
java·spring boot·redis·后端·mysql·spring cloud·面试
Wang's Blog5 天前
Java 接入Redis: 通用命令与键管理
java·服务器·redis