php单线程 Redis三种客户端对比(优缺点对比+使用建议)
Redis 是用单线程来处理多个客户端的访问,因此作为 Redis 的开发和
Redis 支持多种语言的客户端,下面列举了部分 Redis 支持的客户端语言,大家可以通过官网查看 Redis 支持的客户端详情。 Redis 是用单线程来处理多个客户端的访问,因此作为 Redis 的开发和运维人员需要了解 Redis 服务端和客户端的通信协议,以及主流编程语言的 Redis 客户端使用方法,同时还需要了解客户端管理的相应 API 以及开发运维中可能遇到的问题。 Redis 客户端通信协议# Redis制定了RESP(Redis Serialization Protocol,Redis序列化协议)实现客户端与服务端的正常交互,这种协议简单高效,既能够被机器解析,又容易被人类识别。 RESP可以序列化不同的数据类型,如整型、字符串、数组还有一种特殊的Error类型。需要执行的Redis命令会封装为类似于字符串数组的请求然后通过Redis客户端发送到Redis服务端。Redis服务端会基于特定的命令类型选择对应的一种数据类型进行回复。 1. RESP 发送命令格式 在RESP中,发送的数据类型取决于数据报的第一个字节: 数据类型本文翻译名称基本特征例子Simple String单行字符串第一个字节是+,最后两个字节是\r\n,其他字节是字符串内容+OK\r\nError错误消息第一个字节是-,最后两个字节是\r\n,其他字节是异常消息的文本内容-ERR\r\nInteger整型数字第一个字节是:,最后两个字节是\r\n,其他字节是数字的文本内容:100\r\nBulk String定长字符串第一个字节是$,紧接着的字节是内容字符串长度\r\n,最后两个字节是\r\n,其他字节是字符串内容$4\r\ndoge\r\nArrayRESP数组第一个字节是*,紧接着的字节是元素个数\r\n,最后两个字节是\r\n,其他字节是各个元素的内容,每个元素可以是任意一种数据类型*2\r\n:100\r\n$4\r\ndoge\r\n 发送的命令格式如下,CRLF代表"\r\n":
以set hello world这个命令为例,发送的内容就是这样的:
第一行*3表示有3个参数,$3表示接下来的一个参数有3个字节,接下来是参数php单线程,$5表示下一个参数有5个字节,接下来是参数,$5表示下一个参数有5个字节,接下来是参数。 所以set hello world最终发送给redis服务器的命令是:
2. RESP 响应内容
有了这个协议,我们就可以编写程序来和 Redis 服务端进行通信。由于 Redis 的流行,已经存在了很多流行的开源客户端。本文主要选择 Java 领域 Redis 官方推荐的客户端进行介绍。 Redis 的 Java 客户端# Redis 官方推荐的 Java 客户端有Jedis、lettuce 和 Redisson。 1. Jedis Jedis 是老牌的 Redis 的 Java 实现客户端,提供了比较全面的 Redis 命令的支持,其官方网址是:。 优点: 缺点: 2. lettuce lettuce ([?let?s]),是一种可扩展的线程安全的 Redis 客户端,支持异步模式。如果避免阻塞和事务操作,如BLPOP和MULTI/EXEC,多个线程就可以共享一个连接。lettuce 底层基于 Netty,支持高级的 Redis 特性,比如哨兵,集群,管道,自动重新连接和Redis数据模型。lettuce 的官网地址是: 优点: 3. Redisson Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的 Java 常用对象,还提供了许多分布式服务。其中包括( BitSet, Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore, Lock, AtomicLong, CountDownLatch, Publish / Subscribe, Bloom filter, Remote service, Spring cache, Executor service, Live Object service, Scheduler service) Redisson 提供了使用Redis 的最简单和最便捷的方法。Redisson 的宗旨是促进使用者对Redis的关注分离(Separation of Concern),从而让使用者能够将精力更集中地放在处理业务逻辑上。Redisson的官方网址是: 优点: 缺点: 4. 使用建议 结论:lettuce + Redisson Jedis 和 lettuce 是比较纯粹的 Redis 客户端,几乎没提供什么高级功能。Jedis 的性能比较差,所以如果你不需要使用 Redis 的高级功能的话,优先推荐使用 lettuce。 Redisson 的优势是提供了很多开箱即用的 Redis 高级功能,如果你的应用中需要使用到 Redis 的高级功能,建议使用 Redisson。具体 Redisson 的高级功能可以参考: 原文链接: 如果觉得本文对你有帮助,可以转发关注支持一下 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |