Redis与大多数关系数据库不同,除了微调一些配置参数以增强Redis的处理能力以外,在Redis的服务端几乎不能进行任何其他的优化。在应用程序设计的最开始,使用恰当的数据类型和API,是充分利用Redis的高性能特性并同时避免其短处的关键。
某些关系数据库中运行缓慢或者难以完成的任务在Redis中可以很快速和轻松地完成,但是Redis并不能满足所有的存储需求。首先,因为Redis默认将所有数据存储在内存中,所以数据大小超过内存大小时Redis将无法收纳所有数据。其次,Redis事务并不完全符合ACID规范。如果需要完全符合ACID规范的事务,就不能使用Redis.
在设计一个使用Redis的应用程序时,通常并不是只有一种数据类型适用于业务场景,这就意味着**对存储和查询性能的不同要求会促成不同的设计。**在设计时,要通过各种各样的原型验证俩确定那种数据类型最为合适。
设计一个使用Redis的应用程序时,应该考虑两个原则:
1) 尽可能地将数据组合在一起来降级往返时延RTT,可以使用管道和Redis的一些API
2) Redis本质上是一个单线程的数据存储服务,因此在使用Redis的命令时应牢记这些命令的时间复杂度(Redis的文档提供了每个API的时间复杂度),否则时间复杂度高的命令很可能造成在线Redis严重的延迟!
需要使用Redis的Java客户端才能在Java应用程序中使用Redis,开源且易用的Redis Java客户端是Jedis