redis之学习(二)使用场景以及性能分析

之前我们以及了解到redis的介绍与简单用法,本文将从各个数据结构的性能与操作redis名字的复杂度进行实际生产中的分析。

String类型

操作字符串类型命令的时间复杂度
命令 时间复杂度
set key value O(1)
get key O(1)
del key [key …] O(k),k为key的个数
mset key value [key value …] O(k),k为key的个数
mget key [key …] O(k),k为key的个数
incr key O(1)
decr key O(1)
incrby key increment O(1)
decrby key increment O(1)
incrbyfloat key increment O(1)
append key value O(1)
strlen key O(1)
setrange key offset value O(1)
getrange key start end O(n),n是字符串的长度,由于获取字符串非常快,所以如果字符串不是很长,可以视为O(1)
字符串类型的内部编码有三种:
  • int 8个字节的长整型
  • embstr 小于等于39个字节的字符串 (redis版本3.0之前是39,redis3.2之后是44字节)
  • raw 大于39个字符串的字符串(redis版本3.0之前是39,redis3.2之后是44字节)
    redis会根据当前值的类型和长度决定使用哪种内部编码实现。

int类型:

127.0.0.1:6379> set test:int 15
OK
127.0.0.1:6379> get test:int
"15"
127.0.0.1:6379> type test:int
string
127.0.0.1:6379> object encoding test:int
"int"

embstr类型字符串长度小于等于39:

127.0.0.1:6379> set test:str hello
OK
127.0.0.1:6379> get test:str
"hello"
127.0.0.1:6379> object encoding test:str
"embstr"

当字符串长度大于39(3.0之前,3.2之后是44)的时候会变成raw,如下:

127.0.0.1:6379> set test:raw 12345678912345678912345678912345678912345678
OK
127.0.0.1:6379> strlen test:raw                      #我用的是redis5.0故是44
(integer) 44
127.0.0.1:6379> object encoding test:raw
"embstr"
127.0.0.1:6379> set test:raw 123456789123456789123456789123456789123456789
OK
127.0.0.1:6379> strlen test:raw
(integer) 45
127.0.0.1:6379> object encoding test:raw     
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值