|
1. Redis简介
随着互联网尤其是Web2.0技术的迅猛发展,每个网民都成为信息发布者和消费者。Web服务器中的数据存储量呈爆炸增长趋势,而单位时间内Web服务器接收的访问请求也在逐步增加。这对后台数据库处理大规模数据和应对高并发访问的能力,提出越来越高的要求。传统的关系数据库由于其固有缺陷难以有效支持新型Web应用。
NoSQL数据库作为一类新型非关系数据库,具有高性能、高效存储、高可用性和高可扩展性等诸多优势。它结构简单,读写效率高,支持服务器集群,能够处理海量数据,可以应对高并发访问。NoSQL数据库打破了关系数据库的垄断局面,被广泛应用于各种大型Web应用。目前,NoSQL数据库有大量商业实现,如:Google的BigTable,Amazon的Dynamo 等等。除此之外,NoSQL数据库也有一些开源实现,如:Redis,Memcached,HBase等等。
Redis是一种开源的基于Key-Value的轻量级NoSQL数据库。该项目使用BSD授权协议,由Salvatore Sanfilippo于2009年发起,最新的稳定版本为2.4.0。Redis用C语言编写而成,源代码仅4万行左右,编译后二进制文件不到1M,能够方便地嵌入到各种应用环境。麻雀虽小,五脏俱全。Redis除支持基本的针对Key-Value的Get/Set操作外,还具备若干实用的新特性。
Redis中的Value不仅能够存储String类型,还能存储List,Set,Sorted Set和Hash四种常见的数据结构,并提供针对这些数据结构的操作原语,这为开发人员提供了极大便利,能够有效减少网络数据传输量。Redis也被称为“数据结构服务器”。
Redis支持Master/Slave集群。集群中有一台Master服务器,其下可以挂载若干Slave服务器,而Slave服务器下还可挂载若干Slave服务器,每个Slave服务器都是Master服务器的镜像。读操作可以负载均衡到各个服务器上并行执行。写操作则先阻塞各Slave服务器,然后在Master服务器上执行,最后把修改传播到各Slave服务器并解除阻塞。
Redis支持内存数据持久化。它能够把内存中存储的数据按照一定策略写入硬盘文件,并通过读取硬盘文件重建内存数据。这能够在一定程度上缓解服务器崩溃导致的数据丢失问题。Redis支持Snapshotting和AOF两种持久化方法:前者能够导出完整镜像文件,相当于完全备份;后者则在日志文件中记录每个写操作,相当于增量备份。
Redis实现了独立于操作系统的Virtual Memory管理系统,能优化系统运行效率。Redis还支持Pipelining批处理,能提高系统吞吐量。
Redis的诸多优点吸引了大批开发人员,它被广泛地应用于各种NoSQL数据库适用的场合,譬如程序员问答社区StackOverFlow就使用Redis作为缓存服务器。
下面将详细介绍Redis的安装和使用方法。2. Redis安装配置
a) Redis安装
获取Redis
1,官网下载:http://www.redis.io/download
2,笔者使用的Redis下载:
Redis安装文件解压后,有以下几个文件。见下图
redis-server.exe:服务程序
redis-check-dump.exe:本地数据库检查
redis-check-aof.exe:更新日志检查
redis-benchmark.exe:性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询 (类似于 Apache 的ab 工具).
在解压好redis的安装文件后,还需要在redis根目录增加一个redis的配置文件redis.conf
因内容范围及篇幅有限,此处不详细讲解redis.conf
此处不讲解命令行方式启动,直接双击redis-server.exe启动Redis服务程序
b)根据BizFoundation教程创建BizFoundation工程,在工程中加入jar包,在程序中嵌入Redis代码
jredis-1.0-rc2.jar下载处--->
关键代码如下:
- private static JRedis jredis = new JRedisClient("127.0.0.1", 6379);
复制代码 初始化客户端实例,构造函数包含两个参数,
一个"127.0.0.1",Redis服务器端IP,
一个6379,Redis服务器端口号
实例化客户端后,即可开始应用,此处的jredis实例类似于普通jdbc的connection,同时也具有类似于hashmap的功能
BizFoundation程序关键代码:
1,显示列表代码
- public void listCode(Page page,Code code) throws RedisException {
- page = codeService.findByPage(code, page);//此处将数据库中查出的数据以id为key,存于jredis中
- List list = page.getResult();
- for(int i =0;i
|
|
|
|
|
|
|