Redis开发与运维读书笔记之三——字符串

作者: tcxurun 分类: 学习笔记 发布时间: 2020-03-12 14:15 ė 6 没有评论

字符串

字符串类型是Redis最基础的数据结构。键都是字符串类型,其他数据结构都是基于字符串构建的。

字符串类型的值可以是字符串、数字和二进制数据,但最大值不能超过512M。

 

字符串常用命令

设置值

set key value [ex seconds][ps milliseconds] [nx|xx]

ex seconds:为键设置秒级过期时间

px milliseconds:为键设置毫秒级过期时间

nx:键必须不存在,才可以设置成功,用于添加

xx:键必须存在,才可以设置成功,用于更新

 

除了set选项,还有setex、setnx两个命令,作用和ex、nx选项一样。

setnx可以作为分布式锁的一种实现方案

 

获取单个值:get key

批量设置值:mset key  value [key value …]

批量获取值:mget key [key …] 如果有些键不存在,值为nil(空),按照传入键的顺序返回

批量操作命令可以有效提高开发效率,但注意数量过多可能造成Redis阻塞或网络拥塞

 

计数:incr key

返回结果:

值不是整数,返回错误

值是整数,返回自增后的结果

键不存在,按照值为0自增,返回结果1

 

自减:decr

自增指定数字:incrby

自减指定数字:decrby

自增浮点数:incrbyfloat

 

不常用命令:

追加值:append key value

字符串长度:strlen key

设置并返回原值:getset key value

设置指定位置的字符:setrange key offset value

获取部分字符串:getrange key start end

 

内部编码

int:8个字节的长整型

embstr:小于等于39个字节的字符串

raw:大于39个字节的字符串

Redis根据当前值的类型和长度决定内部编码实现

 

使用命令:

object encoding key  

可以看到键所属的内部编码

 

字符串的典型使用场景

  • 缓存:加速读写和降低后端压力。比较推荐的键名是“业务名:对象名:id:[属性]”,可以防止键冲突和项目的可维护性,但也要注意键名过长造成的内存浪费
  • 计数:可以实现快速计数、查询缓存的功能,同时数据可以异步落地到其他数据源。一个真实的计数系统还要考虑防作弊、按照不同维度计数、数据持久化等问题
  • 共享Sesson:通过Redis对Seesion进行集中管理,需要保证Redis的高可用和扩展性,每次用户更新或者查询登录信息都直接从Redis中集中获取
  • 限速:在限制用户在一段时间内只能操作几次的场景,可以使用Redis的超时功能进行控制

本文出自天一直很蓝,转载时请注明出处及相应链接。

本文永久链接: http://www.tcxurun.cn/archives/550

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Ɣ回顶部