参考自《Redis开发与运维》

简介

字符串是Redis最基础的数据结构,键都是字符串类型,而其他几种数据结构都是建立在字符串基础上。
字符串类型的值实际上可以是字符串(简单字符串或复杂字符串JSON/XML等等),数字,二进制,值最大不能超过512MB
Redis字符串介绍

字符串命令

命令 命令描述
set key value [ex seconds] [px milliseconds] [nx|xx] ex:设置秒级过期时间; px:设置毫秒级过期时间; nx:key必须不存在,才可以设置成功,用于添加; xx:key必须存在,才可以设置成功,用于更新
setex key seconds value 作用和set+ex一样,是 组合键
setnx key value 作用和set+nx一样,是组合键
get key 获取值
mset key value [key value....] 批量设置值
mget key [key...] 批量获取值,按传入键的顺序返回,有些键不存在,返回nil
incr key 计数,自增操作,值不为整数,返回错误,值是整数,返回自增的结果,key不存在,按照值为0递增,返回1
decr incrby decrby incrbyfloat 自增,自减,增加指定值,减少指定值,增加指定浮点数
append key value 向字符串尾部追加值
getset key value 设置并返回原值

Redis字符串介绍
批量操作可以有效提高开发效率,执行命令的时间包括命令发送时间(受网络影响)+服务端运行命令时间,批量操作只需一次命令发送时间,否则要N次命令发送时间,而且一般来说命令发送时间大于服务端命令执行时间,而且网络不好的话,发送时间更长,同时注意每次批量操作发送的命令不是无节制的,如果数量过多可能造成Redis阻塞或网络拥塞。因为Redis处理能力已经很高了,对于开发人员来说,网络可能成功性能的瓶颈

setnxsetxx应用场景:
setnx可以作为分布式锁的一种实现方案,因为Redis是单线程命令处理机制,如果多个客户端同时执行setnx key value,那么只有一个客户端能设置成功

字符串内部编码

字符串类型的内部编码有三种:
int:8个字节的长整型
embstr:小于等于39字节的字符串
raw:大于39字节的字符串
Redis会根据当前值的类型和长度决定使用哪种内部编码实现

字符串的典型使用场景

  1. 缓存功能
    Redis作为缓存层,MySQL作为存储层,绝大部分请求的数据都是从Redis中获取。由于Redis具有支撑高并发的特性,所以缓存通常能起到加速读写和降低后端压力的作用。
    PS.Redis合理键名设置:业务名:对象名:id:[属性]
    Redis字符串介绍
  2. 计数
    Redis可以实现快速计数、查询缓存的功能,同时数据可以异步落地到其他数据源。
  3. 共享Session
    一个分布式Web服务将用户的Session信息保存到各自的服务器上,处于负载均衡的考虑,分布式服务会将用户的访问均衡到不同的服务器上,用户刷新一次访问可能会发现需要重新登录,为了解决这个问题,可以用Redis将用户的Session进行集中管理,每次用户更新或者查询登录信息都直接从Redis中集中获取,只要保证Redis是高可用和可扩展的就行
    Redis字符串介绍
    Redis字符串介绍
  4. 限速
    许多应用出于安全的考虑,会在每次进行登录时,让用户输入手机验证码,从而确定是否是用户本人。但是为了短信接口不被频繁访问,会限制用户每分钟获取验证码的频率,此功能可以用Redis实现,使用set ex nx和incr自增验证码获取次数。
    Redis字符串介绍
    其他限速功能也可以类似实现,限制一个IP地址不能在一秒钟内访问超过N次等等,充分利用字符串提供的命令

相关文章:

  • 2022-01-12
  • 2021-12-06
  • 2021-06-26
  • 2021-12-12
  • 2022-12-23
  • 2021-07-26
  • 2021-09-18
猜你喜欢
  • 2021-05-19
  • 2021-10-18
  • 2022-12-23
  • 2021-11-23
  • 2021-06-18
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案