修改后的字符串value长度。
getrangekey start end
O(1)
如果截取的字符串长度很短,我们可以该命令的时间复杂度视为o(1),否则就是o(n),这里n表示截取的子字符串长度。该命令在截取子字符串时,将以闭区间的方式同时包含start(0表示第一个字符)和end所在的字符,如果end值超过value的字符长度,该命令将只是截取从start开始之后所有的字符数据。
子字符串
setbitkey offset value
O(1)
设置在指定offset上bit的值,该值只能为1或0,在设定后该命令返回该offset上原有的bit值。如果指定key不存在,该命令将创建一个新值,并在指定的offset上设定参数中的bit值。如果offset大于value的字符长度,redis将拉长value值并在指定offset上设置参数中的bit值,中间添加的bit值为0。最后需要说明的是offset值必须大于0。
在指定offset上的bit原有值。
getbitkey offset
O(1)
返回在指定offset上bit的值,0或1。如果offset超过string value的长度,该命令将返回0,所以对于空字符串始终返回0。
在指定offset上的bit值。
mgetkey [key ...]
O(N)
n表示获取key的数量。返回所有指定keys的values,如果其中某个key不存在,或者其值不为string类型,该key的value将返回nil。
返回一组指定keys的values的列表。
msetkey value [key value ...]
O(N)
n表示指定key的数量。该命令原子性的完成参数中所有key/value的设置操作,其具体行为可以看成是多次迭代执行set命令。
该命令不会失败,始终返回ok。
msetnxkey value
[key value ...]
O(N)
n表示指定key的数量。该命令原子性的完成参数中所有key/value的设置操作,其具体行为可以看成是多次迭代执行setnx命令。然而这里需要明确说明的是,如果在这一批keys中有任意一个key已经存在了,那么该操作将全部回滚,即所有的修改都不会生效。
1表示所有keys都设置成功,0则表示没有任何key被修改。
?
| set |
set,setnx,setrange,mset,mestnx,append,getset |
| get |
get,mget,getrange, |
| 对数字字符串加减 |
incr,incrby,incrbyfloat/ decr,decrby--increment(增量),decrement(减量) |
| 对二进制数字符串操作 |
setbit,getbit,bitop,bitcount |
| 其他 |
strlen,setex(存在多少秒),psetex(存在多少毫秒) |
?
哈希hash
我们可以将Redis中的Hash类型看成具有String Key和String Value的map容器。所以该类型非常适合于存储键值对象的信息。如Username、Password和Age等。如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。每一个Hash可以存储4294967295个键值对。
| 令原型 |
时间复杂度 |
命令描述 |
返回值 |
| hset key field value |
O(1) |
为指定的Key设定Field/Value对,如果Key不存在,该命令将创建新Key以参数中的Field/Value对,如果参数中的Field在该Key中已经存在,则用新值覆盖其原有值。 |
1表示新的Field被设置了新值,0表示Field已经存在,用新值覆盖原有值。 |
| hget key field |
O(1) |
返回指定Key中指定Field的关联值。 |
返回参数中Field的关联值,如果参数中的Key或Field不存,返回nil。 |
| hexists key field |
O(1) |
判断指定Key中的指定Field是否存在。 |
1表示存在,0表示参数中的Field或Key不存在。 |
| hlen key |
O(1) |
获取该Key所包含的Field的数量。 |
返回Key包含的Field数量,如果Key不存在,返回0。 |
| hdel key field [field ...] |
O(N) |
时间复杂度中的N表示参数中待删除的字段数量。从指定Key的Hashes Value中删除参数中指定的多个字段,如果不存在的字段将被忽略。如果Key不存在,则将其视为空Hashes,并返回0. |
实际删除的Field数量。 |
| hsetnxkey field value |
O(1) |
只有当参数中的Key或Field不存在的情况下,为指定的Key设定Field/Value对,否则该命令不会进行任何操作。 |
1表示新的Field被设置了新值,0表示Key或Field已经存在,该命令没有进行任何操作。 |
| hincrby key field increment |
O(1) |
增加指定Key中指定Field关联的Value的值。如果Key或Field不存在,该命令将会创建一个新Key或新Field,并将其关联的Value初始化为0,之后再指定数字增加的操作。该命令支持的数字是64位有符号整型,即increment可以负数。 |
返回运算后的值。 |
| hgetall key |
O(N) |
时间复杂度中的N表示Key包含的Field数量。获取该键包含的所有Field/Value。其返回格式为一个Field、一个Value,并以此类推。 |
Field/Value的列表。 |
| hkeys key |
O(N) |
时间复杂度中的N表示Key包含的Field数量。返回指定Key的所有Fields名。 |
Field的列表。 |
| hvalskey |
O(N) |
时间复杂度中的N表示Key包含的Field数量。返回指定Key的所有Values名。 |
Value的列表。 |
| hmgetkey field [field ...] |
O(N) |
时间复杂度中的N表示请求的Field数量。获取和参数中指定Fields关联的一组Values。如果请求的Field不存在,其值返回nil。如果Key不存在,该命令将其视为空Hash,因此返回一组nil。 |
返回和请求Fields关联的一组Values,其返回顺序等同于Fields的请求顺序。 |
| hmset key field value [field value ...] |
O(N) |
时间复杂度中的N表示被设置的Field数量。逐对依次设置参数中给出的Field/Value对。如果其中某个Field已经存在,则用新值覆盖原有值。如果Key不存在,则创建新Key,同时设定参数中的Field/Value。 |
? |
?
| set |
hset,hsetnx,hmset, |
| get |
hget,hmget,hgetall,hkeys(所有域),hvals(所有域值) |
| 对value进行增量 |
hi |