专栏首页大道七哥《闲扯Redis一》五种数据类型之String型
原创

《闲扯Redis一》五种数据类型之String型

一、前言#

Redis 提供了5种数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要。

String是Redis的最基本的数据类型,可以理解为与 Memcached 一模一样的类型,即Key-Value型的数据,String类型是二进制安全的,另外 Redis 的 String 可以包含任何数据,简单的字符串、复杂的字符串(xml、json)、数字(整数、浮点数)、二进制(图片、音频、视频),一个 Redis 中字符串 value 最多可以是 512M。

二、String 类型操作命令#

命令

描述

用法

SET

1.将字符串值Value关联到Key2.Key已关联则覆盖,无视类型3.原本Key带有生存时间TTL,那么TTL被清除

SET key value [EX seconds] [PX milliseconds] [NX|XX]

GET

1.返回key关联的字符串值2.Key不存在返回nil3.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对应的Value2.某个Key不存在那么这个Key返回nil

MGET key [key ...]

SETEX

1.将Value关联到Key2.设置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进行加减,在实际工作中还是很常用的。

Copy  INCR/DECR操作在 Redis 中的相关命令:

命令

描述

用法

INCR

1)Key中存储的数字值+1,返回增加之后的值2)Key不存在,那么Key的值被初始化为0再执行INCR3)如果值包含错误类型或者字符串不能被表示为数字,那么返回错误4)值限制在64位有符号数字表示之内即-9223372036854775808~9223372036854775807

INCR key

DECR

1)Key中存储的数字值-12)其余同INCR

DECR key

INCRBY

1)将key所存储的值加上增量返回增加之后的值2)其余同INCR

INCRBY key increment

DECRBY

1)将key所存储的值减去减量decrement2)其余同INCR

DECRBY key decrement

五、INCR/DECR 应用场景#

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

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 《闲扯Redis一》五种数据类型之String型

    String是Redis的最基本的数据类型,可以理解为与 Memcached 一模一样的类型,即Key-Value型的数据,String类型是二进制安全的,另...

    大道七哥
  • Notepad++使用NppFTP插件编辑linux上的文件

    原文出处:http://www.yund.tech/zdetail.html?type=1&id=e1c16a10b7bd14fa92ccb533a3294c0...

    大道七哥
  • 《亿级流量网站架构核心技术》概要 《亿级流量网站架构核心技术》目录一览

    本书暂定名称为《亿级流量网站架构核心技术——跟开涛学搭建高可用高并发系统》,如有好的书名建议欢迎留言,必当重谢。内容已交由出版社编辑,相信很快就会和大家见面。主...

    大道七哥
  • Key | 常见问题

    Key 1.如何成为腾讯位置服务开发者?如何申请Key? 请参阅:http://lbs.qq.com/guides/startup.html,如有还有问题可以...

    腾讯位置服务
  • java之spring mvc之初始spring mvc

    Vincent-yuan
  • 关于HTTP,我们需要知道的事儿

    (1)HTTP请求报文 HTTP请求报文 = 报文首部 + 报文主体(请求参数)

    城市中的游牧民族
  • 你真的了解Lateral View explode吗?--源码复盘

    Lateral view与UDTF函数一起使用,UDTF对每个输入行产生0或者多个输出行。Lateral view首先在基表的每个输入行应用UDTF,然后连接结...

    数据仓库践行者
  • 计算机网络基础:这是一份详细 HTTP 学习指南

    Carson.Ho
  • 计算机网络基础:这是一份详细HTTP学习指南

    Java团长
  • 最全面的HTTP知识总结

    HTTP网络通信协议在任何的开发工作中都起到非常重要的作用,今天,我们来讲解下关于HTTP的相关知识。

    Carson.Ho

扫码关注云+社区

领取腾讯云代金券