前言
上一节中详细解析的什么是Redis,以及Redis能够解决什么问题,不能解决什么问题。非常好,我们终于可真正开始学习Redis了!
本篇将会解析Redis数据结构中字符串的命令、适用场景,以及内部编码
redis的数据结构
string(字符串)
redis的字符串是什么?
以单个字符串存储的数据结构,是redis其他数据结构的基础。在redis中,字符串会有多种存储形式,如数字类型为整数,并小于2^63 -1时,会以int型存储,占8Byte;大于2^63-1时会转为另一种编码存储,在稍后的内部编码会做解释。
常用命令
设置值
1
| set key value [ex seconds] [px milliseconds] [nx|xx]
|
获取值
批量设置值
1
| mset key value [key value...]
|
批量获取值
计数
命令 |
作用 |
例子 |
incr key |
int型自增1 |
incr score |
decr key |
int型自减1 |
decr score |
incrby key increment |
int型自增 |
incrby score 10 |
decrby key decrement |
int型自减 |
decrby score 10 |
incrbyfloat key increment |
浮点型自增 |
incrbyfloat float1 1.12 |
不常用命令
命令 |
作用 |
例子 |
strlen key |
字符串长度 |
strlen str1 |
append key value |
追加值 |
append site chingk.com |
getset key value |
设置并返回原值 |
getset site chingk.com |
setrange key offeset value |
设置指定位置的字符 |
setrange site 2 chingk.com |
内部编码
编码 |
内容 |
大小 |
int |
整数型,大于-2^63,小于2^63-1 |
8Byte |
embstr |
字符型,小于等于39字节的字符串 |
>=1Byte,<=39Byte |
raw |
字符型,大于39字节的字符串 |
>39Byte |
使用场景
redis由于使用单线程模型,不会出现aba问题,所以字符串适合计数,此外redis字符串类型常用的场景是缓存,一般缓存的格式业务名:对象名:id:[属性] 。