美文网首页
redis-string

redis-string

作者: zhangsanzhu | 来源:发表于2018-12-30 22:30 被阅读0次

redis-String

String

简单介绍

String是像java arrayList采用的是预分配冗余空间的方式来减少内存的频繁分配,每次扩容接近翻一倍.
String 的最大值为512m.
特点:
可以支持批量操作
支持过期时间的设置
支持自增操作(最大值为sign long超过会报错)

批量键值对:

set name value
set name value
mget name1 name2  返回一个列表
expire name1 5  指定5s后过期
set num  50
incrby num 5

深入String原理

注意: 创建字符串串的时候capacity和len是一样的大写,默认不会给冗余空间,因为绝大多数场景不会使用append来修改字符串.
结构:正常字符串为字符数组结构,但是redis是维护一个成为sds的数据结构.好处就不用遍历算字符串的长度.

struct SDS<T> {
  T capacity; // 数组容量
  T len; // 数组长度
  byte flags; // 特殊标识位,不理睬它
  byte[] content; // 数组内容
}

存储结构 embstr 和 raw

介绍: 长度小于44字节,则编码格式为embstr,超过44则raw.
特点: embstr 只会进行一次内存分配(连续的内存空间),分别分配redisObjec结构和sdshdr结构表示字符串对象,而raw是两次
注意: 边界有改变,3.0及以前版本是以39字节为界限的,3.2版本以后则为44字节为界限;2.8版本不会REIDS_ENCODING_EMBSTR_SIZE_LIMIT比较,而是直接创建raw.
具体分析: https://blog.csdn.net/XiyouLinux_Kangyijie/article/details/78045385
官方文档:http://redisbook.com/preview/object/string.html
老钱:https://juejin.im/book/5afc2e5f6fb9a07a9b362527/section/5b5af9d96fb9a04f83465ada
扩容:
小于1m加倍扩容,大于1m则只扩容1m.

相关文章

  • redis-string

    redis-String String 简单介绍 String是像java arrayList采用的是预分配冗余空...

  • redis-string分析

    redis核心数据结构 redis的特性: redis的功能使用 本文分析redis的核心数据结构:动态字符串sd...

  • Redis | string操作

    Redis-string操作 Redis 五大核心数据类型[#redis-%E4%BA%94%E5%A4%A7%E...

  • Redis-String内部结构

    SDS-动态字符串 Redis中的字符串叫SDS (Simple Dynamic String),结构是一个带长度...

网友评论

      本文标题:redis-string

      本文链接:https://www.haomeiwen.com/subject/chqulqtx.html