缓存方案之Redis

Redis简介

  Redis是Remote Dictionary Server(Redis) 的缩写,或许光听名字你就能猜出它大概是作什么的。不错,它是一个由Salvatore Sanfilippo编写的key-value存储系统,是一个使用ANSI C语言编写、遵照BSD协议、支持网络、可基于内存亦可持久化的日志型的Key-Value数据库,并提供多种语言的API。在不少地方,Redis也被业内人士称为数据结构服务器,由于它容许缓存的值(value)能够是字符串(string)、哈希(hash)、列表(list)、集合(set)和有序集合(sorted set)等类型。此外,Redis还支持master-slave方式的数据备份,全部的这一切都让Redis在同类型的产品中脱颖而出。html

Redis的优点

  • 性能极高 – 在个人Mac Book Pro上执行Redis的基准测试(benchmark),每秒可以处理写操做数都在80000以上。部分测试结果以下图所示:

这里写图片描述

  • 丰富的数据类型 – Redis支持Strings, Lists, Hashes, Sets 及Ordered Sets数据类型操做。
  • 原子 – Redis的全部操做都是原子性的,同时Redis还支持对几个操做全并后的原子性执行。
  • 丰富的特性 – Redis还支持publish/subscribe,通知,key过时等丰富的特性。

Redis的安装和配置

  如何在Windows和Linux系统上安装Redis在W3CSchool网站已经有详细的讲解了,我分享一下在Mac上安装Redis的过程,跟其余系统基本一致。首先从Redis的官方网站下载Redis的压缩文件,解压以后有一个src目录。因为Mac系统是在Unix系统(FreeBSD)基础上发展起来的,所以能够直接使用make命令对src目录下的源代码进行构建(Makefile确定是已经有的,不懂make的做用和原理不要紧,照作就能够了),构建完成后src目录下会生成一个redis-server文件,运行它就能够启动服务器,以下图所示。java

这里写图片描述

  接下来能够启动一个客户端程序来作一些简单的实验。仍是在刚才的src目录下有一个redis-cli文件,运行它就能够启动一个客户端,以下图所示。redis

这里写图片描述

  关于Redis的数据类型、命令、事务、发布/订阅、数据备份与恢复、配置等内容仍然能够参考上面提到的W3CSchool的网站。数据库

在Java项目中使用Redis

  Jedis是Redis官方首选的Java客户端开发包,点击连接能够得到相关的API文档。下面给出一段简单的测试代码。api

import redis.clients.jedis.Jedis; class RedisTest { public static void main(String[] args) { Jedis jedis = new Jedis("localhost"); // 链接到Redis服务器 // jedis.auth("123456"); // 输入口令进行验证 jedis.set("greeting", "Hello, world!"); // 将字符串缓存到Redis服务器 System.out.println(jedis.get("greeting")); // 从Redis缓存中获取数据 } }

Redis和Memcached的比较

  1. Redis使用最佳方式是所有数据in-memory。
  2. Redis更多场景是做为Memcached的替代者来使用。
  3. 当须要除key/value以外的更多数据类型支持时,Redis更合适。
  4. 当存储的数据不能被剔除时,使用Redis更合适。
  5. Redis可使用指令直接对缓存的数据进行运算。 
相关文章
相关标签/搜索