一、前言

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 类型操作命令

命令形容用法
SET1.将字符串值Value关联到Key
2.Key已关联则笼罩,忽视类型
3.本来Key带有生存工夫TTL,那么TTL被革除
SET key value [EX seconds] [PX milliseconds] [NX|XX]
GET1.返回key关联的字符串值
2.Key不存在返回nil
3.Key存储的不是字符串,返回谬误,因为GET只用于解决字符串
GET key
MSET1.同时设置一个或多个Key-Value键值对
2.某个给定Key曾经存在,那么MSET新值会笼罩旧值
3.如果下面的笼罩不是心愿的,那么应用MSETNX命令,所有Key都不存在才会进行笼罩
4.MSET是一个原子性操作,所有Key都会在同一时间被设置,不会存在有些更新有些没更新的状况
MSET key value [key value ...]
MGET1.返回一个或多个给定Key对应的Value
2.某个Key不存在那么这个Key返回nil
MGET key [key ...]
SETEX1.将Value关联到Key
2.设置Key生存工夫为seconds,单位为秒
3.如果Key对应的Value曾经存在,则笼罩旧值
4.SET也能够设置生效工夫,然而不同在于SETNX是一个原子操作,即关联值与设置生存工夫同一时间实现
SETEX key seconds value
SETNX1.将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 中的相干命令:

命令形容用法
INCR1)Key中存储的数字值+1,返回减少之后的值
2)Key不存在,那么Key的值被初始化为0再执行INCR
3)如果值蕴含谬误类型或者字符串不能被示意为数字,那么返回谬误
4)值限度在64位有符号数字示意之内即-9223372036854775808~9223372036854775807
INCR key
DECR1)Key中存储的数字值-1
2)其余同INCR
DECR key
INCRBY1)将key所存储的值加上增量返回减少之后的值
2)其余同INCR
INCRBY key increment
DECRBY1)将key所存储的值减去减量decrement
2)其余同INCR
DECRBY key decrement

五、INCR/DECR 利用场景

  • 原先单机环境中统计在线人数,变成分布式部署之后能够应用INCR/DECR
  • 因为Redis自身极高的读写性能,一些秒杀的场景库存增减能够基于Redis来做而不是间接操作DB