前文 Redis 设计与实现 2:Redis 对象 说到,五大数据类型都会封装成 RedisObject. typedef struct redisObject { unsigned type:4; // 类型 unsigned encoding:4; // 编码 // ... void *ptr; // 指向具体底层数据的指针 } robj; 不同数据类型的主要区别就是 type 和 encoding 属性的差异,同一种数据类型,有不同的编码. 一.编码类型 字符串的编码有raw.embstr…
目录 字符串类型(String) 散列类型(Hash) 列表类型(List) 集合类型(Set) 有序集合类型(SortedSet) 其它命令 一.字符串类型(String) 1.介绍: 字符串类型是 Redis 中最基本的数据类型,可以存储二进制数据.图片和 Json 的对象. 字符串类型也是其他 4 种数据库类型的基础,其它数据类型可以说是从字符串类型中进行组织的,如:列表类型是以列表的形式组织字符串,集合类型是以集合的形式组织字符串. 2.命令: [备注]包括 INCR 在内的所有 Red…
前言 项目里用到了redis数据结构,不想只是简单的调用api,这里对我的读书笔记做一下记录.原文地址: http://www.redisbook.com/en/latest/internal-datastruct/sds.html 数据类型定义 与sds实现有关的数据类型有两个,一个是 sds: // 字符串类型的别名 typedef char *sds; 另一个是 sdshdr: // 持有sds的结构 struct sdshdr { // buf中已经被使用的字符串空间数量 int len…
前端总结系列 前端总结·基础篇·CSS(一)布局 前端总结·基础篇·CSS(二)视觉 前端总结·基础篇·CSS(二)补充 前端总结·基础篇·JS(一)五大数据类型之字符串(String) 目录 这是<前端总结·基础篇·JS>系列的第一篇,主要总结一下JS的五大基本数据类型中的字符串. 一.属性(Attribute) 二.方法(Method) 2.1 转换 2.2 修改 2.3 匹配 2.4 文本 2.5 其他 为方便阅读,有如下准则: 参数中的[]代表可选参数.如substr(start[,l…
------------恢复内容开始------------ 2.1 SDS的定义 struct sdshdr{ // 记录buf数组中已使用字节的数量 // 等于SDS所保存字符串的长度(不含'\0') int len; // 记录buf数组中未使用字节的数量 int free; // 字节数组,用于保存字符串 char buf[]; } 2.2 SDS 与 C 字符串的区别 常数复杂度获取字符串长度 与C字符串不一样,SDS在被链接时可以通过结构中记录的len字段直接获取长度信息,防止连接字…
前面两篇博客,第一篇介绍了五大数据类型的基本用法,第二篇介绍了Redis底层的六种数据结构.在Redis中,并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这些对象系统也就是前面说的五大数据类型,每一种数据类型都至少用到了一种数据结构.通过这五种不同类型的对象,Redis可以在执行命令之前,根据对象的类型判断一个对象是否可以执行给定的命令,而且可以针对不同的场景,为对象设置多种不同的数据结构,从而优化对象在不同场景下的使用效率. 1.对象的类型与编码 Red…
目录 1.对象的类型与编码 ①.type属性 ②.encoding 属性和 *prt 指针 2.字符串对象 3.列表对象 4.哈希对象 5.集合对象 6.有序集合对象 7.五大数据类型的应用场景 8.内存回收和内存共享 ①.内存回收 ②.内存共享 9.对象的空转时长 前面两篇博客,第一篇介绍了五大数据类型的基本用法,第二篇介绍了Redis底层的六种数据结构.在Redis中,并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这些对象系统也就是前面说的五大数据类型…
Redis的五大数据类型 String(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value.string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 .string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M Hash(哈希,类似java里的Map) Redis hash 是一个键值对集合.KV模式不变,但V是一个键值对.Redi…
redis 五大数据类型使用 字符串str 单个值 127.0.0.1:6379> set name pp # 设置键值[O(1)] OK 127.0.0.1:6379> setex name 300 pp # 设置键值及过期时间 OK 127.0.0.1:6379> get name # 获取单个值 "pp" 多个值 127.0.0.1:6379> mset class1 python class2 java # 设置多个键值[O(1)] OK 127.0.0…
1.对象的类型与编码 Redis使用前面说的五大数据类型来表示键和值,每次在Redis数据库中创建一个键值对时,至少会创建两个对象,一个是键对象,一个是值对象,而Redis中的每个对象都是由 redisObject 结构来表示: typedef struct redisObject{ //类型 unsigned type:4; //编码 unsigned encoding:4; //指向底层数据结构的指针 void *ptr; //引用计数 int refcount; //记录最后一次被程序访问…