Redis有序集合中的元素的编码可以是 ziplist 或者 skiplist。ziplist和skiplist编码选择的标准在于Redis里的元素的数量以及元素成员的长度。当满足以下2个条件时,元素编码为ziplist: 有序集合保存的元素数量小于128个 有序集合保存的所有元素成员的长度小于64…
集合对象的编码可以是intset和hashtable之一,相对于其他类型的结构集合就要简单的多。 intset编码 intset编码的集合对象底层实现是整数集合,所有元素都保存在整数集合中。 typedef struct intset{ //编码方式 uint32_t encoding; //集合包…
先明确一个概念叫dict,又称字典(dictionary)或映射(map),是集合的一种;这种集合中每个元素都是KV键值对。 字典dict 在 Redis 中的应用广泛, 使用频率可以说和 SDS 以及双端链表不相上下, 基本上各个功能模块都有用到字典的地方。 其中, 字典dict的主要用途有以下两…
在版本3.2之前,Redis 列表list使用两种数据结构作为底层实现: 压缩列表ziplist 双向链表linkedlist 因为双向链表占用的内存比压缩列表要多, 所以当创建新的列表键时, 列表会优先考虑使用压缩列表, 并且在有需要的时候, 才从压缩列表实现转换到双向链表实现。 压缩列表转化成双…
Redis作为一种存储字符串的缓存结构,其具体实现是由C语言完成,在C语言中,字符串是通过字符数组实现的,即char[],那么Redis对于字符串的实现是不是也是基于字符数组吗?不是的,Redis对字符串的处理是通过SDS(Simple Dynamic String)实现的。 SDS简单动态字符串,…
创建本地路径## 数据存放目录 mkdir -p /docker/redis/data ## 配置文件存放目录 mkdir -p /docker/redis/conf 根据自己的 Docker 镜像,拉取一份 Redis 的配置文件。wget https://raw.githubuserconten…
什么叫持久化? 用一句话可以将持久化概括为:将数据(如内存中的对象)保存到可永久保存的存储设备中。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、 XML 数据文件中等等。 同时,也可以从应用层和系统层这两个层面来理解持久化: 应用层:如果关闭( Close )你的应用然后重新…
Redis keys 命令DEL key 该命令用于在 key 存在时删除 key。 DUMP key 序列化给定 key ,并返回被序列化的值。 EXISTS key 检查给定 key 是否存在。 EXPIRE key seconds 为给定 key 设置过期时间,以秒计。 EXPIREAT ke…
缓存穿透 redis当中没有数据,数据库当中也没有数据,请求每次都是访问数据库,而数据库有没有数据返回。 缓存穿透解决方案 有很多种方法可以有效地解决缓存穿透问题。 最常见的则是采用布隆过滤器,它是一种数据结构,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被 这个bi…
Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。 String(字符串) string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 k…