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

数据类型 string

一、介绍

在 string 中,存储方式就是直接二进制存储,存进去是什么取出来就是什么。

所以可以存文本,整数,JSON,二进制数据(图片,视频,音频)

存储大小限制 512 MB,所以一般不存视频和音频。

二、常见 string 命令

1、set key value [ex seconds | px milliseconds] [nx | xx]

设置键值对 key value

ex 表示 expire 设置过期时间,px 就是单位毫秒的过期时间

nx 表示添加键值对:已经存在 key 那就不操作,不存在 key 再添加 key value

xx 表示修改键值对:已经存在 key 那就把对应 value 覆盖,不存在 key 不操作

如果在一个 key 的过期时间内覆盖,那么 ttl 会消失或覆盖

2、get key

获取 key 的 value

3、mset key value [key value ...]

一次设置多个 key value

4、mget key [key ...]

一次获取多个 key 的 value

5、setnx key value

等同于 set key value nx

6、setex key seconds value

等同于 set key value ex seconds

7、psetex key milliseconds value

等同于 set key value px milliseconds

8、增减数值

这里的操作仅限于 value 是整数或浮点数

(1)incr key

使 key 对应 value 增加1

(2)incrby key n

使 key 对应 value 增加 n

(3)decr key

使 key 对应 value 减少1

(4)decr key n

使 key 对应 value 减少 n

(5)incrbyfloat key n

使 key 对应 value 增加 n

注意:

如果 key 不存在那就默认 key 对应 value 是0进行操作

1234是对应 value 整数,5对应 value 是浮点数

n 可以是负数

9、append key value

如果 key 存在,那就是尾部追加 value 

如果 key 不存在,相当于 set

返回的是 value 字节数,utf8 下一个汉字对应3字节

10、getrange key start end

获取 key 对应 value 下标 [start, end] 内的字符串

支持负数 index,代表下标 len - index 位置

11、setrange key offset value

从偏移量 offset 位置开始替换成 value

12、strlen key

获取 key 对应 value 的字节长度

三、编码方式

int: 识别到 value 可以用64位整数存

emstr: 相对短的字符串存储

raw: 相对长的字符串存储

四、应用场景

1、作为缓存

类似于 JSON 格式存储信息。

应用服务器会先从 Redis 缓存查找数据,如果有直接返回,如果没有再从数据库查找,找到之后返回,并且将数据写回 Redis

为了防止 Redis 里面的数据越积越多,会设置超时时间,并且当 Reids 剩余内存太少的时候会进行淘汰策略。

2、计数功能

Redis 擅长计数,只要一个 incr key 就行,但是 Redis 不擅长统计,比如获取播放量前100的视频,但是数据库擅长统计,所以此时的办法就是异步把 Redis 的数据写入到专门用于统计的数据库统计之后进行返回。

3、session 会话

cookie 存储在客户端,一般是 sessionId,每次请求的时候带上 sessionId 服务器就能识别用户状态。

session 存储在服务器,当有 sessionId 传来存储的 session 数据就能进行用户状态的识别。

但是由于分布式系统有多台应用服务器,为了每台服务器都能识别所有的用户,Redis 有专门存放 session 信息的缓存,这样设计就能解决问题。

4、验证码

(1)生成验证码一般有两种限制:

a、1分钟内获取不超过5次

设置过期时间60秒并且 nx

如果 key 存在 incr key 并检查是否超过5次

如果 key 不存在生成验证码后返回

b、30秒内不能重复获取

设置过期时间30秒 nx 后验证即可

(2)验证验证码

生成的时候存储 key value,验证的时候对应验证即可

http://www.dtcms.com/a/326779.html

相关文章:

  • 算法题——IP地址分类与子网掩码
  • CobaltStrike安装和使用教程
  • Cobalt Strike的搭建和使用
  • JDK21虚拟线程和 Golang1.24协程的比较
  • STM32——system文件夹
  • Empire--安装、使用
  • 集团型企业如何统一管控子公司权限?
  • 奈飞工厂:算法优化实战​
  • 视频播放器哪个好用?视频播放器PotPlayer,KMP Player
  • 多轮会话记忆的核心挑战
  • 8.11下一代防火墙组网方案笔记
  • 使用MAS(Microsoft Activation Scripts)永久获得win10专业版和office全套
  • C++算法·前缀和
  • DCN之AP IGMP Snooping 原理与配置
  • P3917 异或序列 题解
  • Day01_QT编程20250811
  • while循环结合列表或字典
  • 二叉搜索树解析与实现
  • 快速设计简单嵌入式操作系统(3):动手实操,基于STC8编写单任务执行程序,感悟MCU指令的执行过程
  • USB 标准请求
  • 机器学习——KMeans聚类实战案例解析
  • git配置proxy
  • Docker-09.Docker基础-Dockerfile语法
  • Docker中部署安装MySQL 5.7.32的详细过程
  • Rust面试题及详细答案120道(19-26)-- 所有权与借用
  • PTE之路--04文
  • java面试题准备
  • 【k近邻】Kd树的构造与最近邻搜索算法
  • 线程池知识点总结
  • Spring Cloud Gateway 路由与过滤器实战:转发请求并添加自定义请求头(最新版本)