《闲扯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关联到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

《闲扯Redis一》五种数据类型之String型的更多相关文章
- Redis: Redis支持五种数据类型
ylbtech-Redis: Redis支持五种数据类型 Redis支持五种数据类型:string(字符串) ,hash(哈希),list(列表),set(集合)及zset(sorted set:有序 ...
- 《闲扯Redis三》Redis五种数据类型之List型
一.前言 Redis 提供了5种数据类型:String(字符串).Hash(哈希).List(列表).Set(集合).Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要. ...
- 《闲扯Redis六》Redis五种数据类型之Hash型
一.前言 Redis 提供了5种数据类型:String(字符串).Hash(哈希).List(列表).Set(集合).Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要. ...
- 《闲扯Redis九》Redis五种数据类型之Set型
一.前言 Redis 提供了5种数据类型:String(字符串).Hash(哈希).List(列表).Set(集合).Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要. ...
- 【快速掌握】Redis 的五种数据类型
不同于MySQL的表结构所带来的复杂语句,Redis只需要维护好它的[key-value]结构就可以,因此相比于MySQL,语句非常简单. 今天介绍一下Redis 五种常用的数据类型: 这五种数据类型 ...
- Redis的五种数据类型的简单介绍和使用
1.准备工作: 1.1在Linux下安装Redis https://www.cnblogs.com/dddyyy/p/9763098.html 1.2启动Redis 先把root/redis的red ...
- redis的五种数据类型及应用场景
前言 redis是用键值对的形式来保存数据,键类型只能是String,但是值类型可以有String.List.Hash.Set.Sorted Set五种,来满足不同场景的特定需求. 本博客中的示例不是 ...
- Redis探索之路(三):Redis的五种数据类型String和Hash
一:String 存储二进制数据,可以图片,序列化对象 GET,SET SETNX(not exist) setnx age 33 返回 0,1 SETEX设置有效期 SETEX COLOR 2 ...
- [Redis]Redis的五种数据类型与键值/服务器相关命令
-------------------------------------------------------------------------------------- String(字符串):最 ...
随机推荐
- 从又一家外卖被Uber收购,看美团打车未来
别以为Uber在中国失利,连优步中国都被滴滴收购了,就认为Uber已经不行了.其实从全球范围内来看,Uber还是相当强势的--创始人的那些破事儿不算在内.此外,更重要的是Uber已经不单单是在打车业务 ...
- Ubuntu在没用root权限下如何创建sudo用户
起因 安装openCryptoki之后,如果想执行相关命令的话,那么该用户必须在pkcs11用户组中,于是执行 sudo uersmod -G pkcs11 $(whoami) 之后重启系统,执行 s ...
- HTC“卖身”:那些辉煌、落寞与终结
9月21日,HTC董事会决议通过与谷歌签订合作协议书.前者专注Pixel手机设计研发人才加入谷歌,HTC知识产权非专属授权予Google使用,交易作价11亿美元.事实上,这与微软收购诺基亚不同,并非是 ...
- windows dnsrecon
缺了两个模块 第一个:https://pypi.python.org/pypi/netaddr 第二个:dnspython 找到下载后setup.py install就OK了,话说GFW真***了,用 ...
- AndroidStudio自动导入包
IntelliJ IDEA可以自动优化导入包,但是有多个同名的类位于不同的包时,需要自己手动使用Alt + Enter进行导入. Settings→Editor→General→Auto Import ...
- 告别ThinkPHP6的异常页面, 让我们来拥抱whoops吧
春节期间熟悉了TP6, 也写了一个TP6的博客程序,但系统的异常页面实在另外头疼,很多时候无法查看到是哪行代码出的问题. 所以就特别的想把whoops引进来,经过一系列的研究,终于找到了解决的办法: ...
- mysql插入数据报错一二
上周selenium+phantomjs+python3简单爬取一个网站,往数据库写数据遇到以下两个问题,记录一下: 报错一:Data truncated for column 'update_tim ...
- 史上最全Beyond Compare中文文档.CHM (根据官网整理编辑)
截图如下: 下载地址: 链接:https://pan.baidu.com/s/1Ml98_biT1leXxGLr9fqI_w 提取码:p8jg
- Docker: Error response from daemon: Get.........unauthorized: incorrect username or password
今天在Centos中使用docker拉取redis镜像时报Error response from daemon: Get https://registry-1.docker.io/v2/library ...
- XCTF---easyjava的WriteUp
一.题目来源 题目来源:XCTF题库安卓区easyjava 题目下载链接:下载地址 二.解题过程 1.将该apk安装进夜神模拟器中,发现有一个输入框和一个按钮,随便输入信息,点 ...