Redis
文章平均质量分 83
miqi1227
道可道,非常道。名可名,非常名
展开
-
Redis学习笔记三、List数据类型
一、概述: 在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。List中可以包含的最大元素数量是4294967295。 从元素插入和原创 2015-10-23 12:34:22 · 710 阅读 · 0 评论 -
Redis源码分析二、Redis简单动态字符串
Redis简单动态字符串Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组,以下简称C字符串),而是自己构建了一种名为简单动态字符串(Simple dynamic string, SDS)的抽象类型,并将SDS用作Redis的默认字符串表示。1、Redis的使用:在Redis里面,C字符串只会作为字符串字面量(string literal)用在一些无须对字符串值进行修原创 2016-01-21 15:59:30 · 572 阅读 · 0 评论 -
Redis学习笔记五、Key数据类型
一、概述: 在该系列的前几篇博客中,主要讲述的是与Redis数据类型相关的命令,如String、List、Set、Hashes和Sorted-Set。这些命令都具有一个共同点,即所有的操作都是针对与Key关联的Value的。而该篇博客将主要讲述与Key相关的Redis命令。学习这些命令对于学习Redis是非常重要的基础,也是能够充分挖掘Redis潜力的利器。 在该篇原创 2015-10-23 12:40:02 · 1770 阅读 · 0 评论 -
Redis采用不同内存分配器tcmalloc和jemalloc
我们知道Redis并没有自己实现内存池,没有在标准的系统内存分配器上再加上自己的东西。所以系统内存分配器的性能及碎片率会对Redis造成一些性能上的影响。在Redis的 zmalloc.c 源码中,我们可以看到如下代码:/* Double expansion needed for stringification of macro values. */#define __xstr(s) _原创 2015-11-18 14:38:44 · 4218 阅读 · 0 评论 -
Redis学习笔记一、开篇
一、简介: 在过去的几年中,NoSQL数据库一度成为高并发、海量数据存储解决方案的代名词,与之相应的产品也呈现出雨后春笋般的生机。然而在众多产品中能够脱颖而出的却屈指可数,如Redis、MongoDB、BerkeleyDB和CouchDB等。由于每种产品所拥有的特征不同,因此它们的应用场景也存在着一定的差异,下面仅给出简单的说明: 1). BerkeleyDB是一种极原创 2015-10-23 12:29:46 · 757 阅读 · 0 评论 -
Redis学习笔记七、Sorted-Sets数据类型
一、概述: Sorted-Sets和Sets类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中。它们之间的主要差别是Sorted-Sets中的每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。然而需要额外指出的是,尽管Sorted-Sets中的成员必须是唯一的,但是分数(score)却是可以重复的。原创 2015-10-23 12:38:42 · 583 阅读 · 0 评论 -
Redis学习笔记十四、内存优化
一、特殊编码: 自从Redis 2.2之后,很多数据类型都可以通过特殊编码的方式来进行存储空间的优化。其中,Hash、List和由Integer组成的Sets都可以通过该方式来优化存储结构,以便占用更少的空间,在有些情况下,可以省去9/10的空间。 这些特殊编码对于Redis的使用而言是完全透明的,事实上,它只是CPU和内存之间的一个交易而言。如果内存使用率方面高一些,那么原创 2015-10-23 12:49:50 · 493 阅读 · 0 评论 -
Redis学习笔记十三、服务器管理
一、概述: Redis在设计之初就被定义为长时间不间断运行的服务进程,因此大多数系统配置参数都可以在不重新启动进程的情况下立即生效。即便是将当前的持久化模式从AOF切换到RDB也无需重启。 在Redis中,提供了一组和服务器管理相关的命令,其中就包含和参数设置有关的CONFIG SET/GET command。二、相关命令列表:命令原型原创 2015-10-23 12:48:40 · 520 阅读 · 0 评论 -
Redis学习笔记十、持久化
一、Redis提供了哪些持久化机制: 1). RDB持久化: 该机制是指在指定的时间间隔内将内存中的数据集快照写入磁盘。 2). AOF持久化: 该机制将以日志的形式记录服务器所处理的每一个写操作,在Redis服务器启动之初会读取该文件来重新构建数据库,以保证启动后数据库中的数据是完整的。 3). 无持久化: 我们可以通过配置原创 2015-10-23 12:45:50 · 605 阅读 · 0 评论 -
Redis学习笔记八、事务
一、概述: 和众多其它数据库一样,Redis作为NoSQL数据库也同样提供了事务机制。在Redis中,MULTI/EXEC/DISCARD/WATCH这四个命令是我们实现事务的基石。相信对有关系型数据库开发经验的开发者而言这一概念并不陌生,即便如此,我们还是会简要的列出Redis中事务的实现特征: 1). 在事务中的所有命令都将会被串行化的顺序执行,事务执行期间,R原创 2015-10-23 12:41:52 · 603 阅读 · 0 评论 -
Redis学习笔记二、String数据类型
一、概述: 字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。二、相关命令列表:命令原型时间复杂度命令描述返回值A原创 2015-10-23 12:32:25 · 811 阅读 · 0 评论 -
Redis学习笔记十二、管线
一、请求应答协议和RTT: Redis是一种典型的基于C/S模型的TCP服务器。在客户端与服务器的通讯过程中,通常都是客户端率先发起请求,服务器在接收到请求后执行相应的任务,最后再将获取的数据或处理结果以应答的方式发送给客户端。在此过程中,客户端都会以阻塞的方式等待服务器返回的结果。见如下命令序列: Client: INCR X Server: 1 Cl原创 2015-10-23 12:47:44 · 468 阅读 · 0 评论 -
Redis学习笔记六、Hashes数据类型
一、概述: 我们可以将Redis中的Hashes类型看成具有String Key和String Value的map容器。所以该类型非常适合于存储值对象的信息。如Username、Password和Age等。如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。每一个Hash可以存储4294967295个键值对。二、相关命令列表:命令原原创 2015-10-23 12:37:36 · 530 阅读 · 0 评论 -
Redis学习笔记十五、实例代码
在之前的博客中已经非常详细的介绍了Redis的各种操作命令、运行机制和服务器初始化参数配置。本篇博客是该系列博客中的最后一篇,在这里将给出基于Redis客户端组件访问并操作Redis服务器的代码示例。然而需要说明的是,由于Redis官方并未提供基于C接口的Windows平台客户端,因此下面的示例仅可运行于Linux/Unix平台。但是对于使用其它编程语言的开发者而言,如C#和Java,Redis则原创 2015-10-23 12:50:50 · 466 阅读 · 0 评论 -
Redis学习笔记十一、虚拟内存
一、简介: 和大多NoSQL数据库一样,Redis同样遵循了Key/Value数据存储模型。在有些情况下,Redis会将Keys/Values保存在内存中以提高数据查询和数据修改的效率,然而这样的做法并非总是很好的选择。鉴于此,我们可以将之进一步优化,即尽量在内存中只保留Keys的数据,这样可以保证数据检索的效率,而Values数据在很少使用的时候则可以被换出到磁盘。 在实原创 2015-10-23 12:46:51 · 620 阅读 · 0 评论 -
Redis学习笔记四、Set数据类型
一、概述: 在Redis中,我们可以将Set类型看作为没有排序的字符集合,和List类型一样,我们也可以在该类型的数据值上执行添加、删除或判断某一元素是否存在等操作。需要说明的是,这些操作的时间复杂度为O(1),即常量时间内完成次操作。Set可包含的最大元素数量是4294967295。 和List类型不同的是,Set集合中不允许出现重复的元素,这一点和C++标准库中原创 2015-10-23 12:35:38 · 630 阅读 · 0 评论 -
Redis学习笔记九、主从复制
一、Redis的Replication: 这里首先需要说明的是,在Redis中配置Master-Slave模式真是太简单了。相信在阅读完这篇Blog之后你也可以轻松做到。这里我们还是先列出一些理论性的知识,后面给出实际操作的案例。 下面的列表清楚的解释了Redis Replication的特点和优势。 1). 同一个Master可以同步多个Slaves。原创 2015-10-23 12:44:34 · 477 阅读 · 0 评论 -
Redis源码简要分析
在文章的开头我们把所有服务端文件列出来,并且标示出其作用:adlist.c //双向链表ae.c //事件驱动ae_epoll.c //epoll接口, linux用ae_kqueue.c //kqueue接口, freebsd用ae_select.c //select接口, windows用anet.c //网络处理aof.c //处理AOF文件config.c原创 2016-09-17 15:07:34 · 1159 阅读 · 0 评论