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

字符串

字符串类型是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的超时功能进行控制
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇