
Redis
喜欢学习的小棉袄
这个作者很懒,什么都没留下…
展开
-
Win10Redis的下载和简单使用
Redis是一个典型的nosql(not only sql)数据库,是使用c语言开发的一个高性能键值对的数据库,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hashs(哈希类型,它的查找效率特别快,因此,一般将它用作缓存。 下载步骤: 1.在官网上可以下载它的Linux版本,如果是Windows,...原创 2019-01-25 13:41:17 · 434 阅读 · 0 评论 -
Redis设计与实现(八)
Redis持久化 AOF持久化 什么是AOF持久化? 在前边也说了RDB持久化,AOF(Append only File)也是保存数据库状态的一种方式。它和RDB持久化的区别就是RDB是存的数据,而AOF存的是命令。 AOF的实现 AOF的实现可以分为命令追加,文件写入,文件同步三个步骤。 命令追加 在AOF功能打开时,服务器每执行一个指令后,它会以协议格式将被执行的命令追加到服务器状态的ao...原创 2019-03-31 22:55:35 · 145 阅读 · 0 评论 -
Redis设计与实现(七)
Redis的持久化 RDB持久化 什么是RDB持久化? RDB持久化就是将Redis在内存中产生的数据保存在磁盘里,防止数据的丢失。(Redis是一个内存数据库,一旦进程退出,数据库状态也就消失不见了) RDB文件是一个二进制文件,保存的是某一个时间点的数据状态。 RDB的文件结构 完整的RDB文件包含以下部分 |REDIS|db_version|databases|EOF|chec...原创 2019-03-31 11:18:42 · 128 阅读 · 0 评论 -
Redis设计与实现(六)
Redis数据库 数据库的操作及原理 服务器中的数据库切换 struct redisServer{ //一个数组,保存着服务器中所有的数据库 redisDb *db; //服务器数据库数量 int dbnum; ... } 在RedisServer中,每一个数据库都存在RedisServer的一个数据库数组里。我们可以通过select命令来切换数据库。根据d...原创 2019-03-31 11:17:44 · 365 阅读 · 0 评论 -
Redis设计与实现(五)
对象 Redis中对象概述 在前面说的是一些Redis的底层数据结构,那些数据结构是对象实现的基础。在Reids的对象系统中有五种类型的对象。 字符串对象 列表对象 哈希对象 集合对象 有序集合对象 在Java中也有对象,也可以将这些对象看作为相对独立的个体。还有一个和Java中很相似的地方就是Redis对象系统实现了内存回收机制(基于引用计数技术),当程序不需要的话就会被自动释放。Redis...原创 2019-03-31 11:16:46 · 256 阅读 · 0 评论 -
Redis设计与实现(四)
整数集合和压缩列表 整数集合(intset) 整数集合概念 整数集合是一个集合(set) 整数集合里只包含整数,并且集合元素不能太多 整数集合不会有重复的元素(有重复元素集合就没意义了) 整数集合的实现方式 typedef struct intest{ //编码方式 uint32_t encoding; //包含元素的数量 uint32_t length; ...原创 2019-03-31 11:15:55 · 108 阅读 · 0 评论 -
Redis的设计与实现(三)
跳跃表 跳跃表基本概念? 跳跃表是(skiplist)是一种有序的数据结构,通过在每个节点中维持多个指向其他节点的指针,从而使查找更加迅速。 跳跃表的查找时间复杂度平均O(logN),最坏O(n)。 跳跃表可以看作为是一个升级版的链表,从原理来推的话也有些像是从二叉树演变过来的。 Redis中有序集合键的底层实现之一就是跳跃表(有序集合元素数量比较多,有序集合元素的成员是比较长的字符串) 快速...原创 2019-03-31 11:14:27 · 138 阅读 · 0 评论 -
Redis设计于实现(二)
字典 简介 字典又称符号表,映射或关联数组,是一种保存键值对的抽象数据结构。 Redis数据库的底层也是用字典实现的,对数据库的增删改查也是基于对字典的操作之上的。 字典还是哈希键的底层实现之一,当哈希键对比较多或者键值对中的元素都是比较长的,Redis就会使用字典作为底层实现。 字典实现 字典的实现是以哈希表作为它的底层实现,一个哈希表可以有多个哈希表节点,每个节点保存了字典中的一个键值对。...原创 2019-03-07 22:55:07 · 174 阅读 · 0 评论 -
Redis设计与实现(一)
Redis是一种现在挺火的一种nosql数据库,它一般被用作缓存。 Redis的数据结构与对象 redis数据库里的键值对都是由object组成的,数据库建总是一个字符串对象。 redis数据库里的值可以是字符串对象,列表对象,哈希对象,集合对象,有序集合对象中的一种。 Redis的SDS(simple dynamic string ,简单动态字符串) 比如我们可以在redis客户端敲 red...原创 2019-03-05 22:41:15 · 175 阅读 · 0 评论 -
Redis设计与实现(九)
Redis中的事件 Redis是一个事件驱动程序,Reids中服务器需要处理两类事件:文件事件和时间事件。其实就可以说通过事件让服务器来处理业务。下边就谈一谈Redis服务器中的两种事件。 文件事件 文件事件的概念 简而言之,文件事件就是服务端通过Socket和客户端进行交互的产物。说到这块,回想以前在Java写一个小型的网络聊天室用的Socket(套接字),Socket是必须要有服务端,然后客户...原创 2019-04-02 15:39:57 · 213 阅读 · 0 评论