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

数据类型 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.xdnf.cn/news/17695.html

相关文章:

  • MCU中的存储器映射(Memory Map)
  • 【CF】Day125——图论三题
  • 训推一体 | 暴雨X8848 G6服务器 x Intel®Gaudi® 2E AI加速卡
  • C语言变量的声明和定义有什么区别?
  • 图生视频实战:用[灵龙AI API]玩转AI生成视频 – 第2篇,从静图到大片
  • 关于linux系统编程2——IO编程
  • 【Docker实战进阶】Docker 实战命令大全
  • AI基础与实践专题:PyTorch实现线性回归
  • 【unity实战】在Unity中实现不规则模型的网格建造系统(附项目源码)
  • 【实用案例】录音分片上传的核心逻辑和实现案例【文章附有代码】
  • Godot ------ 平滑拖动03
  • SpringBoot 自动配置核心机制(面试高频考点)
  • Orange的运维学习日记--38.MariaDB详解与服务部署
  • JavaEE 初阶第十七期:文件 IO 的 “管道艺术”(下)
  • 《范仲淹传》读书笔记与摘要
  • 使用frp内网穿透实现远程办公
  • 基于AI量化模型的比特币周期重构:传统四年规律是否被算法因子打破?
  • Python(9)-- 异常模块与包
  • AI Coding 概述及学习路线图
  • Elasticsearch Node.js 客户端的安装
  • 【功能测试】软件集成测试思路策略与经验总结
  • FFmpeg - 基本 API大全(视频编解码相关的)
  • 【数据结构】深入理解顺序表与通讯录项目的实现
  • leetcode-hot-100 (图论)
  • CobaltStrike的搭建和使用
  • 爬虫与数据分析实战
  • 【09-神经网络介绍2】
  • 一文读懂 C# 中的 Lazy<T>
  • 第10节 大模型分布式推理典型场景实战与架构设计
  • Godot ------ 平滑拖动02