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

Redis :String类型

String类型

String是Redis中的字符串,是Redis中最基本的数据类型,直接是按照二进制数据的进行存储

Redis中的所有key都是String类型,但是value是有差别的

常见的命令

set

将String类型的value存储到key中,如果之间有相同的key,则会将之间的值直接的进行覆盖

SET命令⽀持多种选项来影响它的⾏为

EX:设置key的过期时间,单位是秒

注:expire和EX的区别是:expire是给已经存在的key设置过期时间,而EX是给key赋值的同时,给key设置过期时间

PX:设置key的过期时间,单位是毫秒

NX:如果可以不存在才能进行设置,否则将会什么都不返回

XX:更新key的值

 

Mset

一次性设置多个key的值

 

setNX

只允许设置key不存在时的value,设置成功返回1,否则会返回0

setEX

设置过期时间,单位是秒

get

获取key对应的value,如果key不存在,将会返回nil(get只能获得String类型的value)

Mget

一次型获取多个key的值

相较于多次的发送get和set命令,mget和mset可以有效的减少网络时间,使性能更高,不需要多次发送命令

计数命令

incr

将key中对应的String类型的value的值+1

incrby

将key对应的String表示的数字加上对应的值 

decr

将key中对应的String类型的value的值-1

decrby

将key对应的String表示的数字减去对应的值 

incrbyfloat

将key对应的value +/- 去对应的数字

上述的时间复杂度都是O(1)

append

将新的value加到原来的value的后面

append的返回值,长度单位是字节,redis的字符串,不会对字符编码做任何的处理(reids不认识字符,只认字节)--->一个汉字是3个字节,所以只看字节不看字符

getrange

返回key对应的value其中的内容,由start和end确定(左闭右闭),可以使用负数表示倒数,-1表示返回的第一个字符,-2表示返回的倒数第二个字符

setrange

覆盖字串的一部分,从指定的偏移量开始 

strlen

获得String字串的长度,单位是字节

内部编码

String中的内部编码一共有三种

int:8字节的整数   

embstr:压缩字符串   

raw:普通字符串

String类型的应用场景

缓存(redis作为缓存来使用)

在redis中,通常用来存储热点数据,通常把最近使用过的数据定义为热点数据 ,但是随着时间的推移,使用过的数据越来越多,redis中的数据也越来越多,所以我们在redis中写数据的时候,会给数据设置过期时间

计数功能

许多应用都会使用redis作为计数的基础工具,它可以实现快速计数,查询缓存的功能

共享会话

一个分布式的服务将用户的信息保存到各自的服务器中,由于负载均衡的原因,会将用户的请求分布到不同的服务器上,导致用户每次一刷新,都需要重新的登录,所以我们使用redis,将session统一的存储的redis中,⽆论⽤⼾被均衡到哪台Web服务器上,都集中从 Redis 中查询、更新Session信息

手机验证码

很多应⽤出于安全考虑,会在每次进⾏登录时,让用户输⼊⼿机号并且配合给⼿机发送验证码, 然后让用户再次输⼊收到的验证码并进⾏验证,从⽽确定是否是用户本⼈。为了短信接⼝不会频繁访问,会限制用户每分钟获取验证码的频率

可以使用一下伪代码来实现一下redis在手机验证码限制验证时间使用

如果没有超过5次,那么就继续生成验证码发送给用户进行验证。

希望对大家有所帮助!!!!

http://www.lqws.cn/news/206047.html

相关文章:

  • 1Panel运行的.net程序无法读取系统字体(因为使用了docker)
  • 深入剖析Nginx:从入门到高并发架构实战
  • Oracle业务用户的存储过程个数及行数统计
  • ClusterRole 和 ClusterRoleBinding 的关系及使用
  • python调用其它程序 os.system os.subprocess
  • SpringBoot-16-MyBatis动态SQL标签之if和where
  • 第1讲、包管理和环境管理工具Conda 全面介绍
  • 使用Python和Flask构建简单的机器学习API
  • 【Java学习笔记】StringBuilder类(重点)
  • C#使用MindFusion.Diagramming框架绘制流程图(2):流程图示例
  • 华为OD机试_2025 B卷_计算某个字符出现次数(Python,100分)(附详细解题思路)
  • 心理咨询技能竞赛流程方案
  • AOSP CachedAppOptimizer中的冻结和内存压缩功能
  • vector使用及模拟
  • nodejs中的I/O操作指的是什么?
  • 好未来0520上机考试题2:有效三角形的个数
  • 好未来0520上机考试题1:括号的最大嵌入深度
  • 微服务架构的性能优化:链路追踪与可观测性建设
  • # STM32F103 SD卡读写程序
  • [NOI2016] 网格
  • C++ 中的编译期计算(Compile-Time Computation)
  • 22、模板特例化
  • 双面沉金线路板制作流程解析:高可靠性PCB的核心工艺
  • bat批量去掉本文件夹中的文件扩展名
  • 数据类型 -- 字符
  • Python基于Django的文件销毁系统【附源码、文档说明】
  • 操作系统进程管理解析:从 fork 到 exec 的全流程实战与底层原理
  • Unity | AmplifyShaderEditor插件基础(第五集:简易膨胀shader)
  • ThingsCloud事物云平台搭建-微信小程序
  • 【基础算法】差分算法详解