本文转载自公众号“读芯术”(ID:AI_Discovery)。
默认情况下,Redis是一个缓存存储器,被调用作数据库使用。它利用易失性内存,可以为用户提供完整的持久性选项和对其他数据类型的支持。
从前有一段时间,Redis是个全球流行的工具。对于这个曾经横行全球的缓存工具你了解多少,和我一起开启一场关它的技巧和事实之旅吧。
1. 持久性允许用户将Redis视为合法的数据库,而不是不稳定的临时缓存。如果使用类似的工具“Memcached”重启,它将丢失相关信息,但Redis可以将数据无损保存并且保持完整。
2. Redis拥有使用所有流行语言开发的客户端API:C、Ruby、Java、JavaScript和Python。
3. Redis版本2.0的发布提供了扩散数据的功能,应用了订阅/发布消息传递协议(Subscribe/Publish messagingprotocol),也就是pub-sub模型。
4. CPU性能不是Redis的最大障碍,它要么是内存受限,要么是网络受限。但是,如果出现这种情况,水平/垂直扩展有助于克服任何与CPU相关问题。
5. 与MongoDB等传统数据库不同,Redis支持事务。
6. Redis的持久性和关系数据库(RDB):以AOF方式按指定间隔(数据备份)对数据集进行时间点快照,记录服务器接收到的每个写入(write)操作。
7. Redis的快照或Redis后台保存过程只有在服务器没有后续执行命令时才会介入,因此可保证任何在随机存储器(RAM)中报告为基元的指令在磁盘快照中,也被报告为基元。
8. 如果您喜欢使用Java,可以使用“Jedis”,这是一个Java客户机,可以将Java应用程序与Redis连接起来。注意,一个单独的“Jedis”实例不是线程安全的。为了避免这些问题,“JedisPool”出现了,它是一个线程安全的网络连接池,默认最大为8。
9. Redis具有数据库功能。即使与缓存的优点结合起来,它的性能也非常好。事实上,如果不需要持久性,就可以暂时关闭,因为它也可用于缓存。
10. 在数据总是留于内存中这一方面,Redis极大地显示了自己的性能。它超过常规数据库的读写操作能力使开发人员着迷。
11. 许多行业领先的公司都使用Redis,包括Twitter、Pinterest和Github,他们是Redis项目的早期采用者,就像DLT实验室一样。
12. Redis将数据存储为键值对,其中某些类型的数据结构充当键。此外,它还允许对象将其键和值的上限设置为512兆字节。这种键散列的系统,可用于存储键-值对,被称为Redis哈希表。
13. Redis最多可以处理2³²个键,实际测试中,每个实例至少可以处理2.5亿个键。换句话说,使用Redis的限制很可能是机器/基础结构中的可用内存。
14. Redis里每个可能存在的数据结构都可以容纳2³²个元素,即hash、list、set和sorted set达到峰值时可以使用2³²个元素。
15. 尽管如此,到目前为止Redis在最容易设置的软件的排行中仍然位列第二,不要问第一是谁!
最后,友情奉送一个小提示,为了用更有效的分配方式实现Linux性能(这是Redis理想的配置方式):将overcommit_memory设置为1。