共计 1850 个字符,预计需要花费 5 分钟才能阅读完成。
一、前言
Redis 提供了 5 种数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(汇合)、Zset(有序汇合),了解每种数据类型的特点对于 redis 的开发和运维十分重要。
<p align=”right”> 原文解析 </p>
String 是 Redis 的最根本的数据类型,能够了解为与 Memcached 截然不同的类型,即 Key-Value 型的数据,String 类型是二进制平安的,另外 Redis 的 String 能够蕴含任何数据,简略的字符串、简单的字符串(xml、json)、数字(整数、浮点数)、二进制(图片、音频、视频),一个 Redis 中字符串 value 最多能够是 512M。
二、String 类型操作命令
命令 | 形容 | 用法 |
---|---|---|
SET | 1. 将字符串值 Value 关联到 Key 2.Key 已关联则笼罩,忽视类型 3. 本来 Key 带有生存工夫 TTL,那么 TTL 被革除 | SET key value [EX seconds] [PX milliseconds] [NX|XX] |
GET | 1. 返回 key 关联的字符串值 2.Key 不存在返回 nil 3.Key 存储的不是字符串,返回谬误,因为 GET 只用于解决字符串 | GET key |
MSET | 1. 同时设置一个或多个 Key-Value 键值对 2. 某个给定 Key 曾经存在,那么 MSET 新值会笼罩旧值 3. 如果下面的笼罩不是心愿的,那么应用 MSETNX 命令,所有 Key 都不存在才会进行笼罩 4.MSET 是一个原子性操作,所有 Key 都会在同一时间被设置,不会存在有些更新有些没更新的状况 | MSET key value [key value …] |
MGET | 1. 返回一个或多个给定 Key 对应的 Value 2. 某个 Key 不存在那么这个 Key 返回 nil | MGET key [key …] |
SETEX | 1. 将 Value 关联到 Key 2. 设置 Key 生存工夫为 seconds,单位为秒 3. 如果 Key 对应的 Value 曾经存在,则笼罩旧值 4.SET 也能够设置生效工夫,然而不同在于 SETNX 是一个原子操作,即关联值与设置生存工夫同一时间实现 | SETEX key seconds value |
SETNX | 1. 将 Key 的值设置为 Value,当且仅当 Key 不存在 2. 若给定的 Key 曾经存在,SEXNX 不做任何动作 | SETNX key value |
三、利用场景
- 缓存性能:字符串最经典的应用场景,redis 最为缓存层,Mysql 作为贮存层,绝大部分申请数据都是 redis 中获取,因为 redis 具备撑持高并发个性,所以缓存通常能起到减速读写和升高 后端压力的作用。
- 计数器:许多使用都会应用 redis 作为计数的根底工具,他能够实现疾速计数、查问缓存的性能,同时数据能够一步落地到其余的数据源。如:视频播放数零碎就是应用 redis 作为视频播放数计数的根底组件。
- 共享 session:出于负载平衡的思考,分布式服务会将用户信息的拜访平衡到不同服务器上,用户刷新一次拜访可能会须要从新登录,为防止这个问题能够用 redis 将用户 session 集中管理,在这种模式下只有保障 redis 的高可用和扩展性的,每次获取用户更新或查问登录信息都间接从 redis 中集中获取。
- 限速:处于平安思考,每次进行登录时让用户输出手机验证码,为了短信接口不被频繁拜访,会限度用户每分钟获取验证码的频率。
四、非凡的 String 操作:INCR/DECR
INCR/DECR 操作能够利用 Redis 主动帮忙咱们对一个 Key 对应的 Value 进行加减,在理论工作中还是很罕用的。
INCR/DECR 操作在 Redis 中的相干命令:
命令 | 形容 | 用法 |
---|---|---|
INCR | 1)Key 中存储的数字值 +1,返回减少之后的值 2)Key 不存在,那么 Key 的值被初始化为 0 再执行 INCR 3)如果值蕴含谬误类型或者字符串不能被示意为数字,那么返回谬误 4)值限度在 64 位有符号数字示意之内即 -9223372036854775808~9223372036854775807 | INCR key |
DECR | 1)Key 中存储的数字值 -1 2)其余同 INCR | DECR key |
INCRBY | 1)将 key 所存储的值加上增量返回减少之后的值 2)其余同 INCR | INCRBY key increment |
DECRBY | 1)将 key 所存储的值减去减量 decrement 2)其余同 INCR | DECRBY key decrement |
五、INCR/DECR 利用场景
- 原先单机环境中统计在线人数,变成分布式部署之后能够应用 INCR/DECR
- 因为 Redis 自身极高的读写性能,一些秒杀的场景库存增减能够基于 Redis 来做而不是间接操作 DB
正文完