Redis系列教程
基础入门
认识Redis
安装与基础配置
数据类型
入门介绍
字符串类型
Hash类型
List类型
有序集合
无需集合
Stream类型
其他数据类型
常见问题
常见问题总结一
本文档使用 兔兔答题 发布
-
+
首页
字符串类型
## 是什么 在Redis中,String类型是一种最基本的数据类型,存储的形式也是`key => value`格式。key对应的缓存的键名,value则是对应具体的缓存值。value原则上是可以存储任何类型的数据,例如简单的一个字符串、二进制内容、图片的base64格式、JSON序列化后的内容等等。但value的值在Redis中也有大小要求,其大小上限是512M,同时也不推荐value的值过大。这是因为Redis是一个单线程的服务,如果存储的值过大,在数据的处理和网络的传输上都会变得`较慢`,因此不建议value的值多大,如果在实际的业务需求中,value确实存在很大的情况,也可以将value进行拆分存储。 ## 使用场景 在Redis中,String类型也是使用非常多的场景。一般有如下常见的场景: 1、缓存用户的登录信息。在用户登录时生成一个唯一随机的token,作为缓存的key,用户的基础信息作为缓存的value,需要获取用户信息时,则直接根据key得到用户的信息。 2、记录网站的PV、UV等场景。例如要将某一天网站的PV总量进行统计,就可以将统计的日期作为缓存的key,访问的PV总量作为缓存的value,然后再通过异步的方式,将数据存储到数据库中,进行持久化。 3、秒杀场景。一般电商系统都会涉及到商品促销活动,那必然需要考虑到商品秒杀超卖的问题,将商品的ID作为缓存的key,商品的库存数量作为缓存的值,用户秒杀时使用`desc key`命令,如果返回的数值是小于0则说明商品库存不足,秒杀失败,反之则秒杀成功。这是因为`desc`命令在Redis中是一个同步的操作,也就是说不管有多少个秒杀请求,都只能有一个请求去执行这个命令(主要原因是Redis单线程的架构模式)。 4、数据缓存失效验证。在很多场景中,我们会对某些数据做一个短暂的失效验证,超过设置的时间阈值,数据就失效。例如短信验证码,我们在发送短信验证码时,将验证码和手机号添加到Redis中并为其设置一个过期时间。在校验验证码是否正确时,先去Redis中获取到验证码,如果验证码不存在则表示验证码过期。这种场景在很多登录、修改密码等场景都是非常高频的技术点。 5、数据共享。当一个应用非常庞大时,一般都会将整个系统拆分成多个子系统,但我们要在每个子系统中去校验用户登录状态,此时在用户登录操作时,将登录信息添加到Redis中,所有的子系统都从Redis中去读取然后进行校验。多系统实现session共享就是很好的案例。 6、分布式锁实现。分布式锁主要解决的是,多个系统或者多个请求时,只能有一个线程去操作数据,就好比上面第3点提到的秒杀场景。在Redis的set命令中有一个`nx`的参数,表示数据不存在时命令才会被执行,存在就不能执行。这也是String类型很典型的一个案例。 ## 基础操作 Redis虽然作为一个非关系型的内存型数据库,但在使用的理念上和关系型数据库其实都一样,无非就是增删改查操作。这里我们演示也按照增删改查的逻辑。 对字符串的操作,最常用到的字符命令有: - set命令对数据做增加、过期设置、修改操作。 ```shell set name 1 value [NX|XX] [GET] [EX seconds| PX milliseconds|EXAT unix-time-seconds|PXAT unix-time-milliseconds|KEEPTTL] ``` - del命令删除一个key,无论是什么类型,都可以使用del命令删除。 ```shell del key [key ...] ``` - get命令获取一个字符串的值。 ```shell get key ``` ## 常见问题
admin
2024年5月3日 09:46
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码