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在同类型的产品中脱颖而出。

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文件,运行它就可以启动服务器,如下图所示。

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

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

在Java项目中使用Redis

  Jedis是Redis官方首选的Java客户端开发包,点击链接可以获得相关的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可以使用指令直接对缓存的数据进行运算。

 

最新文章

  1. C# 条件编译
  2. bzoj1441 MIN
  3. BZOJ4620: [Wf2016]What Really Happened on Mars?
  4. count-the-repetitions
  5. SQL 表值函数
  6. Linux文件和目录管理常用重要命令
  7. 05.Hibernate多对多关联
  8. Shell script for logging cpu and memory usage of a Linux process
  9. 在Apache中利用ServerAlias设置虚拟主机接收多个域名和设置域名泛解析
  10. Oracle EBS-SQL (PO-2):检查当月到货补单的记录数.sql
  11. 201521123059 《Java程序设计》第十二周学习总结
  12. [array] leetcode - 53. Maximum Subarray - Easy
  13. Eclipse导入项目文件夹
  14. ccd引脚
  15. OSG嵌入QT(QT界面使用Qt Designer编辑)
  16. union和union all的区别(面试常考)
  17. python - 上下文管理协议(with + __enter__ + __exit__)
  18. 搜索引擎ElasticSearchV5.4.2系列一之ES介绍
  19. windows 中 到底是用的哪个java.exe??? 删除了PATH变量的Java设置还是可以运行java.exe windows/system32
  20. Linux 找不到php.ini

热门文章

  1. {$ecs_css_path}
  2. iOS 隐藏Status Bar
  3. shell 脚本文件Windows传到Linux后编码问题
  4. Linux - sort & uniq
  5. [BS-15] Values of type 'NSInteger' should not be used as format arguments
  6. nsstring打印结构体
  7. cocos2dx 3.x(精灵的碰撞检测,点击移动与拖动精灵)
  8. 学习 Log4net
  9. iTOP-4412 平台基础软件的安装和学习
  10. tooltip