摘要:
在使用和阅读lucene源代码时,发现为了提高查找的性能,Lucene在很多地方采取的跳跃表的数据结构。跳跃表(Skip List)是如图的一种数据结构,有以下几个基本特征:元素是按顺序排列的,在Lucene中,或是按字典顺序排列,或是按从小到大顺序排列。跳跃是有间隔的(Interval),也即每次跳跃的元素数,间隔是事先配置好的,如图跳跃表的间隔为3。跳跃表是由层次的(level),每一层的每隔指定间隔的元素构成上一层,如图跳跃表共有2层。看了redisbook中也有关于该数据结构的详细介绍http://www.redisbook.com/en/latest/internal-datastr 阅读全文
摘要:
本篇文章介绍几个redis的应用场景。1.取最新N个数据的操作–比如典型的取你网站的最新文章,通过下面方式,我们可以将最新的5000条评论的ID放在Redis的List集合中,并将超出集合部分从数据库获取•使用LPUSH latest.comments命令,向list集合中插入数据 •插入完成后再用LTRIM latest.comments 0 5000命令使其永远只保存最近5000个ID •然后我们在客户端获取某一页评论时可以用下面的逻辑(伪代码) –FUNCTION get_latest_comments(start,num_items): id_list = redis.lrange(& 阅读全文
摘要:
上篇文章介绍了redis的基本情况和支持的数据类型,本篇文章将介绍redis持久化、主从复制、简单的事务支持及发布订阅功能。持久化•redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化,这是相对memcache来说的一个大的优势。redis支持两种持久化方式,一种是 Snapshotting(快照)也是默认方式,另一种是Append-only file(缩写aof)的方式。Snapshotting 快照是默认的持久化方式。这种方式将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。可以配置自动做快照持久 化的方式。我们. 阅读全文
摘要:
1. Redis 简介•Redis是一款开源的、高性能的键-值存储(key-value store)。它常被称作是一款数据结构服务器(data structure server)。Redis的键值可以包括字符串(strings)类型,同时它还包括哈希(hashes)、列表(lists)、集合(sets)和 有序集合(sorted sets)等数据类型。 对于这些数据类型,你可以执行原子操作。例如:对字符串进行附加操作(append);递增哈希中的值;向列表中增加元素;计算集合的交集、并集与差集等。•为了获得优异的性能,Redis采用了内存中(in-memory)数据集(dataset)的方式。 阅读全文