Redis字符串介绍

参考自《Redis开发与运维》

简介

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

字符串命令
命令命令描述
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设置并返回原值

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

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

字符串内部编码

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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值